php - 当值未更改时,MySQL 在更新时没有受影响的行

标签 php mysql sql-update rows-affected

MySQL 与 PHP,试图更新一行:

$dbQuery = 'UPDATE UserTable SET Age=25 WHERE Id=3';
$result = mysqli_query($dbLink, $dbQuery);
if ($result === FALSE) {
  // Take care of error
}
else {
  $numAffectedRows = mysqli_affected_rows($dbLink);
}

在两种不同情况下,我得到零 $numAffectedRows:
1.当没有Id=3的用户行时
2.当有Id=3但Age之前已经是25的用户行

有什么方法可以区分这两种情况? (除了读取之前的行并在更新之前手动检查值)

最佳答案

根据 mysql documentation ,您可以通过在使用 mysql_real_connect 连接时传递 MYSQLI_CLIENT_FOUND_ROWS 标志来更改 affected_rows 的行为.

在这种情况下,mysql_affected_rows 返回与 WHERE 条件匹配的行数,而不是更新的行数。

关于php - 当值未更改时,MySQL 在更新时没有受影响的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25482164/

相关文章:

mysql - 如何合并具有相同列和不同列的 2 个表的行

mysql优化

sql-server - 将 VARCHAR 转换或转换为 INT;更新专栏

php - 允许使用的 MySQL 最大连接数 - 编码错误?

javascript - CSS 样式在警告消息后消失

php - 找不到类 - 使用 "use"

javascript - 如何以编程方式获取网页大小?

python - PyMysql 使用全局游标更新函数内的查询

mysql - SQL更新表困惑?

两行中的 PHP MySql 交换值