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/