我有一个查询,用户在文本区域字段中键入文本块。他们能够将此信息保存在数据库中。问题是,如果他们没有更改信息或者信息与数据库中已有的数据匹配,我会收到受影响行的“0”。通常,当没有受影响的行时,我会显示一条错误,指出查询失败。我如何“知道”0 个受影响的行是因为数据已经存在,以便我可以显示更具体的错误?
受影响行数为 0 的另一个原因是该UPDATE语句没有匹配任何行。例如:
UPDATE MyTable SET field = 'content' WHERE id = 1234;
Run Code Online (Sandbox Code Playgroud)
如果不存在带有 的行,则给出 0 个受影响的行id = 1234。这也不是一个错误,它只是一个UPDATE碰巧没有匹配任何行。
检测这种情况的方法是使用SELECT来验证是否存在这样的行。如果您可以确认该行存在,但UPDATE表示它影响了 0 行,那么您就知道您尝试更改的值实际上是数据库中已有的行。
SELECT COUNT(*) FROM MyTable WHERE id = 1234;
Run Code Online (Sandbox Code Playgroud)
但区别可能并不重要。如果说有一个错误,您可以报告错误mysql_error(),如 @BoltClock 建议的那样。*如果没有错误,您可以向用户报告“无更改”。
*注意:您不必报告 . 返回的文字消息
mysql_error()。这些消息可能会让用户感到困惑,因此最好报告一些对他们更友好的内容。