执行 UPDATE 语句时,如果值与新值相同,则 rowCount 不会改变。但就我的申请而言,这也是成功的。那么,无论值是否发生变化,我该如何检查更新是否成功?
$stmt = $conn->prepare('UPDATE users SET name = :name WHERE id = :id');
$result = $stmt->rowCount(); // 1
if ($result == 1) {echo "success!";}
最佳答案
您不是在执行查询,只是准备它。所以 rowCount()
将报告无效的行数(指的是上次执行的查询),因为还没有行受到影响,而且系统不知道一旦你使用特定的参数值执行准备好的语句,预先会有多少。
您应该在执行语句时检查是否成功。如果成功,execute()
方法将返回 true
,否则返回 false
。因此,如果执行成功是您唯一需要的,那么您应该按照以下方式进行:
$stmt = $conn->prepare('UPDATE users SET name = :name WHERE id = :id');
$result = $stmt->execute($params); // <-- execute first!
if ($result) {echo "success!";}
关于php - Mysql 更新查询,如果值没有改变怎么办?我该如何检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19858125/