我遇到更新多行的问题。我尝试做的目的是更新共享一个公共变量的所有行,将一个计数器增加一个。
表看起来像这样:
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用该值代表的所有其他记录。
如何纠正?
答案 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对这笔钱是正确的。