MySQL不受影响的行更新时,值没有改变



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文档,在使用mysql_real_connect连接时,可以通过传递MYSQLI_CLIENT_FOUND_ROWS标志来改变affected_rows的行为。

在本例中,mysql_affected_rows返回WHERE条件匹配的行数,而不是更新的行数。

我不认为这是可能的只有一个查询。我会选择INSERT INTO..ON DUPLICATE方法。

$dbQuery = "INSERT INTO UserTable (Id,Age) VALUES('3','25') ON DUPLICATE KEY 
            UPDATE Id='3',Age='25'";
$result = mysql_query($dbQuery);
if ($result === FALSE) {
   // Take care of error
}
else {
   $numAffectedRows = mysql_affected_rows();
   // $numAffectedRows = 0  => row exist
   // $numAffectedRows = >0 => row added with Id,Age specified
}   

相关内容

  • 没有找到相关文章

最新更新