仅当select查询返回一行时,如何更新行?

时间:2016-01-18 02:59:08

标签: php mysql

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

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

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

吗?

这会有用吗?如果是这样,我如何检查它是否在PHP中执行?

2 个答案:

答案 0 :(得分:3)

我认为您只需将where用于update

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

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

答案 1 :(得分: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