【问题标题】:sql - check if row even exist while update without extra query?sql - 在没有额外查询的情况下更新时检查行是否存在?
【发布时间】:2017-04-13 22:55:54
【问题描述】:
echo mysqli_query($con, "UPDATE stuff SET fieldd = 2 WHERE bla = 7");

7 存在于bla 中时,它返回1

但是当7 in bla 不存在时,它也会返回1,为什么????有没有办法找出更新是否成功/如果这一行存在,而不用之前的额外查询检查这一行是否存在?

【问题讨论】:

  • 您使用的是什么 DB API?
  • 你的意思是PHP中的mysqli?我忘了添加它。已编辑
  • 但是当行存在但字段已经是 2 时它不会返回“成功”,对吗?
  • 受影响的行不会告诉您记录是否存在。如果您尝试将列更新为它已有的值,则受影响的行将为 0。

标签: php mysql sql


【解决方案1】:

一种方法使用变量:

SET @found = 0;
UPDATE stuff
    SET fieldd = if(@found := 1, 2, 2)
    WHERE bla = 7;

SELECT @found;

更正式的方式是使用mysql_affected_rows()(参见here)。但是,默认情况下,这只显示该行是否实际发生了变化。

【讨论】:

  • 这有点难以理解究竟如何使用它oO你能把它编辑成PHP代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 2021-11-22
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
  • 2021-05-04
  • 2019-04-06
相关资源
最近更新 更多