2012-07-18 97 views
-1

我試圖更新我的價值觀和奇怪的事情正在發生,MySQL的似乎是更新行出了自己的自由意志。我在做什麼MySQL的更新不更新所有行(使用PHP)

UPDATE accountsTable SET Status = 'TerminatedProfile' WHERE id IN (1,2,3) 

而且它會更新一行或兩行不是全部3行,即使我多次運行該代碼。如果我使用這個查詢並通過phpmyadmin運行它,它工作正常。有沒有問題的PHP的MySQL的實施或什麼?

我使用

mysql_connect("$host", "$user", "$password")or die("cannot connect"); 
mysql_select_db("$db")or die("cannot select DB"); 
mysql_query($query2); 

更新: 我跑它Joomla和也許有一些東西需要與會話,因爲我試圖更新的行之一是在我登錄的管理員用戶與...一起。特別感謝MikeB的答覆。

+3

你需要顯示你的完整代碼。您的查詢似乎沒有任何問題。既然你命名了你的變量'$ query2',我假設你已經顯示了更多內容。 – 2012-07-18 14:14:22

+4

您不需要參數中的任何引號到'mysql_connect'或'mysql_select_db'。 – nickb 2012-07-18 14:15:28

+0

@MikeB 查詢一個簡單地得到我已經寫爲(1,2,3)的ID,所以沒有什麼更多。 nick 正如我所說的查詢運行部分正確,所以我相信沒有任何連接或任何錯誤。 – 2012-07-18 14:36:27

回答

1

這是很難知道是怎麼回事,不完整的代碼或者$ QUERY2已經被應用。

但你可以嘗試不使用列表來更新這些行。試試:

UPDATE accountsTable SET Status = 'TerminatedProfile' WHERE id = 1 AND id = 2 AND id = 3 

這只是爲了確保問題是否存在$ query2。

您也可以嘗試運行MySQL控制檯上查詢吧,看看會發生什麼。如果有效,可能錯誤在於你如何做。

+0

我甚至嘗試將所有三行(或左右)作爲單獨的更新查詢來運行,結果保持不變。有些行被更新,有些不是。 正如我所說的從phpmyadmin運行它的工作完美,所以我懷疑mysql類與它有關。 – 2012-07-18 14:52:29