2014-09-26 104 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')”; 彼得裴国是对的钱。