2014-09-26 3 views
0

我在更新多行時遇到問題。我想要做什麼的意圖是更新所有共享公用變量的行,從而增加一個計數器。在單個查詢中更新多行

表看起來是這樣的:

table name: Inventory 

id item rep onhand 
1 Screw Bob 1 
2 Bolt Paul 3 
3 Nail Bob 4 
4 Brace Jen 2 
5 Glue Bob 12 

我所試圖做的是讓所有的現有量的鮑勃由1

增加選擇查詢:

$query = "SELECT * FROM `Inventory` WHERE (rep='Bob')"; 
    $result = mysql_query($query) or die; 
    $data=mysql_fetch_array($result); 
    $onhand=$data[onhand]; 

更新查詢:

$query = "UPDATE `Inventory` SET onhand=($onhand+1) WHERE (rep='Bob')"; 
        $result = mysql_query($query) or die; 

會發生什麼情況是螺絲確實會更新到2,但每個連接到鮑勃的其他人也更新到值2而不是他們的值+1。看起來正在發生的是它將第一個記錄中找到的第一個值(id#1)和更新所有其他記錄(其中Bob用該值記錄)。

這怎麼解決?

回答

1

試試這個:

UPDATE Inventory SET onhand=onhand+1 WHERE rep='Bob' 

你真正想要的是1

+0

謝謝你的迴應。我試過了,它改變了所有的第一行的新值。 – 2014-09-26 18:41:37

+0

好的,讓我們來看看它的底部並修復它。 1)根本不需要選擇。請刪除。 2)請使用具有正確的SQL更新聲明的最新代碼更新您的問題,我會看一看。 – 2014-09-26 19:56:26

+0

好吧,當你說刪除選擇我改變了這一行:$ query =「UPDATE'Inventory' SET onhand =($ onhand + 1)WHERE(rep ='Bob')」; to $ query =「UPDATE'Inventory' SET onhand =(onhand + 1)WHERE(rep ='Bob')」;
和一切工作,感謝您的幫助。 :) – 2014-09-27 15:48:40

0

由於建議刪除選擇解決問題來增加現有量。我改變了這一行:$ query =「UPDATE Inventory SET onhand =($ onhand + 1)WHERE(rep ='Bob')」; to $ query =「UPDATE Inventory SET onhand =(onhand + 1)WHERE(rep ='Bob')」; 彼得裴國是對的錢。