0

嗨,我正在使用更新查询来更新表的第一行,我正在使用条件将行与 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 的行,但我只想更新第一行。我怎样才能做到这一点。如果有人以前遇到过这个问题,请回答。

4

3 回答 3

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

虽然请注意,您应该真正使用准备好的语句来解决这个问题!

于 2012-05-02T15:59:21.057 回答
0

您应该定义 FIRST 的含义。然后您可以按此排序并 LIMIT 1 或显式匹配您的 where 子句中的 MIN 。

于 2012-05-02T16:01:38.940 回答
0

好的,所以我终于解决了这个问题。更新查询不适用于 LIMIT OFFSETS,例如如果您将 LIMIT 0,1 设置为它将不起作用。它可以在没有 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 的隐藏值相同,因此它与表上的值匹配并更新它。

于 2012-05-03T05:15:13.950 回答