如何知道 MySQL UPDATE 查询是否因为提供的信息与数据库中已有的数据匹配而失败?

2023-11-29

我有一个查询,用户在文本区域字段中键入文本块。他们能够将此信息保存在数据库中。问题是,如果他们没有更改信息或者信息与数据库中已有的数据匹配,我会收到受影响行的“0”。通常,当没有受影响的行时,我会显示一条错误,指出查询失败。我如何“知道”0 个受影响的行是因为数据已经存在,以便我可以显示更具体的错误?


您会得到 0 个受影响行的另一个原因是如果UPDATE语句不匹配任何行。例如:

UPDATE MyTable SET field = 'content' WHERE id = 1234;

如果不存在行,则给出 0 受影响的行id = 1234。这也不是一个错误,它只是一个UPDATE碰巧没有匹配任何行。

检测这种情况的方法是使用SELECT验证是否存在这样的行。如果您可以确认该行存在,但UPDATE说它影响了 0 行,那么您就知道您尝试更改的值实际上是数据库中已有的行。

SELECT COUNT(*) FROM MyTable WHERE id = 1234;

但区别可能并不重要。如果出现以下情况,您可能会报告错误mysql_error()说有一个,正如 @BoltClock 所暗示的那样。* 如果没有错误,您可以向用户报告“无更改”。

* Note: you don't必须报告返回的文字消息mysql_error()。这些消息可能会让用户感到困惑,因此最好报告一些对他们更友好的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道 MySQL UPDATE 查询是否因为提供的信息与数据库中已有的数据匹配而失败? 的相关文章

随机推荐