在单个查询中更新多行

时间:2014-09-26 14:05:27

标签: rows

我遇到更新多行的问题。我尝试做的目的是更新共享一个公共变量的所有行,将一个计数器增加一个。

表看起来像这样:

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。似乎正在发生的事情是它正在获取在frist记录中找到的第一个值(id#1)并更新Bob用该值代表的所有其他记录。

如何纠正?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

你真正想要的是增加1点。

答案 1 :(得分:0)

如建议删除select解决了问题。我更改了这一行:$ query =“UPDATE Inventory SET onhand =($ onhand + 1)WHERE(rep ='Bob')”; to $ query =“UPDATE Inventory SET onhand =(onhand + 1)WHERE(rep ='Bob')”; Peter Pei Guo对这笔钱是正确的。