在我的LAMP應用程序(使用笨),我有這個 - $> DB->更新...產生像下面這樣的SQL呼叫:SQL UPDATE不起作用?
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
的問題是,這似乎工作間歇性地 - 我目前不知道什麼可能是錯誤的。有什麼關於MySQL我需要知道什麼時候嘗試更新?我正在添加&更新記錄(但可能每隔5秒不超過一個查詢)。當我在phpMyAdmin中運行查詢時,它工作正常。
在我的LAMP應用程序(使用笨),我有這個 - $> DB->更新...產生像下面這樣的SQL呼叫:SQL UPDATE不起作用?
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
的問題是,這似乎工作間歇性地 - 我目前不知道什麼可能是錯誤的。有什麼關於MySQL我需要知道什麼時候嘗試更新?我正在添加&更新記錄(但可能每隔5秒不超過一個查詢)。當我在phpMyAdmin中運行查詢時,它工作正常。
這是對馬克答案的補充。 mysql_affected_rows
如果您嘗試更新記錄,但該記錄中的值不會更改,也會返回0
。
例如;在MyTable
當前值:
+----+-----------+
| ID | MyProcess |
+----+-----------+
| 1 | 5 |
+----+-----------+
然後當你運行你的查詢:
UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1
mysql_affected_rows
將返回0
難道這是什麼是你的情況發生?
哦,好點。 – 2010-09-30 13:31:46
就是這樣。我在數據庫領域增加了一個計數器。我的做法是錯誤的。謝謝。 – StackOverflowNewbie 2010-10-01 03:04:56
有一點可以吸引人的是,如果你的id
出於某種原因不存在於表中,你將不會從UPDATE
聲明中得到任何錯誤 - 它只會默默無聞地做任何事情。
您可以使用例如mysql_affected_rows
(或等同於您的數據庫API)來查看某行實際上已更新,並且如果不顯示或記錄錯誤消息。這應該可以幫助您解決問題。
該表有1條記錄。它有id = 1。我發現這個錯誤的原因是在更新後放置一個斷言。我斷言受影響的行應該是1.有時斷言失敗。 – StackOverflowNewbie 2010-09-30 08:45:29
當斷言失敗時,受影響的行數是零還是多於一個? – 2010-09-30 09:00:04
另外,表格是否總是有一條記錄?你永遠不會刪除或從表中插入,只是更新? – 2010-09-30 09:01:33
你可以發佈你的實際代碼,包括斷言? – 2010-09-30 09:00:34