php - Mysql 更新查询,如果值没有改变怎么办?我该如何检查?

标签 php mysql

执行 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/

相关文章:

PHP 静态方法/单例模式

mysql - 返回 MySQL 中特定列值的滞后

php - 如何从给定半径内的数据库中检索经度和纬度?

java - 如何在使用 LOAD DATA 命令时跳过 csv 文件的行?

mysql - SQL 查询中出现意外的 T_CONSTANT_ENCAPSED_STRING 错误

php - 将数据输入 php 表单,而不填充 MySQL 表

php - 构建自定义API——需要逻辑检查

php - 如何将秒表结果(数组)推送到第一个表结果(数组)

php - 在 TCPDF 中,如何将当前页码获取为整数?

php - 安全 header 无效 - Paypal 错误 - WHMCS