您好我正在使用更新查询来更新表格的第一行,其中我使用条件来匹配带有product_id的行。这是查询
UPDATE `product_option` SET `input_value`='$color_a',`input_price`='$color_price_a' WHERE `product_id`='$_REQUEST[pid]' and `input_type`='option' LIMIT 0,1
这是表
这里where条件匹配带有product_id = 38的7行,当我更新它时没有限制因此它将更新所有具有product_id = 38的行,但我想只更新第一行。我怎样才能做到这一点。如果有人在此之前遇到过这个问题,请回答。
答案 0 :(得分:4)
将LIMIT
设为1
,然后按id
升序排序。像这样:
UPDATE `product_option`
SET `input_value`='$color_a',
`input_price`='$color_price_a'
WHERE `product_id`='$_REQUEST[pid]'
and `input_type`='option'
ORDER BY `id` ASC
LIMIT 0,1
虽然注意到你应该真的使用准备好的语句来解决这个问题!
答案 1 :(得分:0)
你应该定义FIRST的含义。 然后你可以通过它和LIMIT 1订购或明确匹配你的where子句中的MIN。
答案 2 :(得分:0)
好的,所以我终于解决了这个问题。 更新查询不能与LIMIT OFFSETS一起使用,就像你将LIMIT 0一样,它将无效。它可以在没有LIMIT的情况下工作,或者如果您将LIMIT设置为只有在必须更改LIMIT 2或更多的多行时才能使用它。
在我的情况下,我想只更新一个特定的行,因为我使用了
<input type="hidden">
在这个隐藏类型中我调用行的值和我要更新的行我已经调用了这个隐藏输入的值,如下所示
"UPDATE `product_option` SET `input_value`='$weight_d',`input_price`='$weight_price_d' WHERE `product_id`='$_REQUEST[pid]' and `input_type`='checkbox' and `input_value`='$_POST[hide_weight_d]' and `input_price`='$_POST[hide_weight_price_d]'"
此查询中$ _POST [hide_weight_d]与$ weight_d的隐藏值相同,因此它与表中的值匹配并更新它。