我正在使用 PDO 进行更新查询。我想知道我的更新查询是否没有改变数据库中的任何内容,因为:
- 传递的值与数据库中已经存在的值相同。我知道
rowCount()
在这种情况下返回0
。 - 我尝试更新的行在数据库中不存在。据我所知,
rowCount()
在这种情况下也会返回0
。
我是否被迫在 UPDATE 之前使用 SELECT 语句,以确定我尝试更新的记录是否确实存在?或者这种事情还有另一种常见的做法。
我一直在仔细阅读文档,但找不到确凿的答案: http: //php.net/manual/en/pdostatement.rowcount.php
我遇到了这个 StackOverflow 答案,这表明 rowCount() 在某些情况下可能会返回 NULL,但我认为它不适用于我的情况:请参阅为什么 PDO rowCount() 在不修改表的情况下更新表后返回 0现有数据?
从这个问题的评论中:
如果数据未被修改,则 rowCount 将为零。如果数据被修改,rowCount 将为 1 或更高。如果出现错误,rowCount 将为 null 或 false 或非零值。
更新 我发现另一个问题在下面的评论中给出了一个命题的例子: Getting the insert and update ID with PDO
UPDATE2
另一个问题通过PDO::MYSQL_ATTR_FOUND_ROWS
PDO 提出了另一个解决方案 - 检查行是否已更新?