2015-07-13 114 views
0

我正在拍一個簡單的拍賣網站,我有一個按鈕讓用戶點擊他們想要出價。出價應該增加1,這似乎做得很好。不過,我只是想改變我的bidprice字段的價值。我不知道爲什麼,但我的代碼是增加了bidhistoryid的新行,每次出價上漲時都會返回一個。我希望我已經夠清楚了。基本上,我需要做的是將我的出價價值提高一個,沒有什麼更多。正在更新MySQL表 - PHP

這是我更新表的代碼。很確定我的問題在這裏。

mysql_query(" 
UPDATE bidhistory 
SET bidprice = bidprice + 1 
WHERE biditemid = biditemid" 
); 
+0

更新無法添加新行 – 2015-07-13 05:59:15

+0

在'WHERE biditemid = biditemid'中,是代碼的確切文本,還是右邊的'biditemid'應該是變量? – mooiamaduck

+0

@mooiamaduck,這是確切的文字。 –

回答

0

子句WHERE biditemid = biditemid評估爲真爲表中的所有行(在一般情況下,X = X對於所有的x,是嗎?)。每次運行時,該查詢將爲表中的所有行增加bidprice。這可能是你麻煩的根源。

您需要根據已投標項目的ID參數化查詢。

+0

所以biditemid等於itemid,但itemid位於不同的表中。我仍然可以使用'WHERE biditemid = itemid'嗎? –

+0

那麼,問題是*哪個* itemid'。我假定問題的'itemid'來自HTTP請求(例如通過'$ _POST')。一旦你有了'itemid',你就不需要在桌子上查看它 - 你已經知道了。所有你需要做的就是在查詢中插入它(並記住**正確地轉義它**):'''mysql_query(「UPDATE bidhistory SET bidprice = bidprice + 1 WHERE biditemid =」。mysql_escape_string($ itemid))' ' – mooiamaduck

+0

另請注意,您正在使用PHP的不推薦使用的mysql API。 http://php.net/manual/en/intro.mysql.php – mooiamaduck