【问题标题】:How can I update a row only if a select query returns one row?How can I update a row only if a select query returns one row?
【发布时间】:2016-01-18 02:59:08
【问题描述】:

我想检查两个用户提供的值是否与数据库中的一行匹配,如果匹配,请将枚举值从 0 更改为 1。

我知道我可以在两个查询中执行此操作,但我宁愿在一个查询中执行此操作。我唯一能找到的就是如何更新一行(如果存在),如果不存在则创建它。但是,我不希望这样,好像提供的值不正确,脚本应该退出。

我可以使用IF EXISTS (SELECT x FROM x where y = y AND z = z) UPDATE ...

这行得通吗?如果是这样,我如何检查它是否在 PHP 中执行?

【问题讨论】:

  • 我认为您过于复杂了,请参见下文

标签: php mysql


【解决方案1】:

我认为你会使用 whereupdate

update x
    set enumcol = 1
    where y = $y and z = $z;

这会更新值匹配的行。如果没有匹配的行,则不更新任何行。

【讨论】:

  • 嗯,我应该想到这一点。但是,我怎么知道它是否正确执行?
  • @cantsay mysqli_affected_rows
【解决方案2】:

这不是在标准条件下完成吗?喜欢:

UPDATE my_table 
SET enum_field=1 
WHERE one_field=[first_value] AND another_field=[second_value]

也许您还必须匹配用户 ID 或其他内容:

UPDATE my_table 
SET enum_field=1 
WHERE one_field=[first_value] AND another_field=[second_value] AND id=[user_id]

在更复杂的情况下,这个答案可能会有所帮助:

MySQL: update a field only if condition is met

【讨论】:

    猜你喜欢
    • 2022-12-27
    • 2022-12-01
    • 1970-01-01
    • 2022-12-02
    • 2022-12-27
    • 2022-12-01
    • 2017-06-29
    • 2016-02-01
    • 2022-12-28
    相关资源
    最近更新 更多