2010-09-30 93 views
0

在我的LAMP應用程序(使用笨),我有這個 - $> DB->更新...產生像下面這樣的SQL呼叫:SQL UPDATE不起作用?

UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1 

的問題是,這似乎工作間歇性地 - 我目前不知道什麼可能是錯誤的。有什麼關於MySQL我需要知道什麼時候嘗試更新?我正在添加&更新記錄(但可能每隔5秒不超過一個查詢)。當我在phpMyAdmin中運行查詢時,它工作正常。

+1

你可以發佈你的實際代碼,包括斷言? – 2010-09-30 09:00:34

回答

3

這是對馬克答案的補充。 mysql_affected_rows如果您嘗試更新記錄,但該記錄中的值不會更改,也會返回0

例如;在MyTable當前值:

+----+-----------+ 
| ID | MyProcess | 
+----+-----------+ 
| 1 | 5   | 
+----+-----------+ 

然後當你運行你的查詢:

UPDATE `MyTable` SET `MyProcess` = 5 WHERE `Id` = 1 

mysql_affected_rows將返回0

難道這是什麼是你的情況發生?

+0

哦,好點。 – 2010-09-30 13:31:46

+0

就是這樣。我在數據庫領域增加了一個計數器。我的做法是錯誤的。謝謝。 – StackOverflowNewbie 2010-10-01 03:04:56

1

有一點可以吸引人的是,如果你的id出於某種原因不存在於表中,你將不會從UPDATE聲明中得到任何錯誤 - 它只會默默無聞地做任何事情。

您可以使用例如mysql_affected_rows(或等同於您的數據庫API)來查看某行實際上已更新,並且如果不顯示或記錄錯誤消息。這應該可以幫助您解決問題。

+0

該表有1條記錄。它有id = 1。我發現這個錯誤的原因是在更新後放置一個斷言。我斷言受影響的行應該是1.有時斷言失敗。 – StackOverflowNewbie 2010-09-30 08:45:29

+0

當斷言失敗時,受影響的行數是零還是多於一個? – 2010-09-30 09:00:04

+0

另外,表格是否總是有一條記錄?你永遠不會刪除或從表中插入,只是更新? – 2010-09-30 09:01:33