2010-04-27 106 views
-1

我想使用更新查詢來更改數據庫中保存的值,我嘗試存儲的新值都保存在php變量中。我不確定我做錯了什麼。MYSQL更新查詢php

的mysql_query( 「UPDATE SET用戶狀態 = '滿' WHERE USER_ID = '$ USER_ID'」)或死亡(mysql_error());

這裏是錯誤消息

重複條目 '91317691' 的關鍵1

在此先感謝

+1

發生了什麼或沒有發生什麼?您是否100%確定存在具有該ID的用戶記錄? '$ user_id'包含什麼? – 2010-04-27 18:30:16

+1

您需要更具體地瞭解發生的錯誤類型。也許發佈mysql_error()的文本。 – Chaim 2010-04-27 19:03:33

+0

請同時添加'SHOW CREATE TABLE user'的輸出。您是否確定您發佈的查詢導致此「重複條目」錯誤? – VolkerK 2010-04-27 19:24:04

回答

-1

我認爲你需要改變

.. ''+ $ user_id +「'」...

把你的單雙號後加上你的$ user_id,然後加上最後的結尾「'」(雙引號,單引號,雙引號)

此外,如果你沒有控制$ user_id變量,你可能會打開SQL注入攻擊

0

它看起來像你的user_id字段是一個整數。把「」圍繞這將打破東西

嘗試不帶引號

mysql_query("UPDATE user SET status='full' WHERE user_id = $user_id")or die(mysql_error()); 
+1

如有必要,MySQL自動將類似「12」的東西轉換爲整數。 – VolkerK 2010-04-27 19:13:49

+0

它從來沒有爲我做過,總是搞砸我的查詢 – Galen 2010-04-27 19:39:03

+0

見http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html – VolkerK 2010-04-27 20:04:25

1

這意味着有獨特的密鑰的重複。假設您在(user_id, status)status上使用的是唯一enum,如果是這種情況,您可能已經有與您嘗試更新的條目匹配的條目。

| user_id | status | 
| 1234 | full | 
| 1234 | none | 

如果不是這種情況,發佈架構會有所幫助。

0

道歉,我意識到問題是在我的PHP腳本其他地方引起的,但我已經解決了它。

感謝您的指導