如何检查UPDATE mysqli查询是否正确执行?

时间:2012-10-20 15:58:00

标签: php mysqli sql-update prepared-statement

以下是我的案例:

$sql = 'UPDATE user SET password = ? WHERE username = ? AND password = ?';
if($stmt->prepare($sql)) {
    $stmt->bind_param('sss', $newPass, $_SESSION['username'], $oldPass);
    $stmt->execute();
}

现在,如何查看UPDATE查询是否成功执行?更确切地说,如何查看旧密码和用户名是否正确以便我可以存储新密码? 我试过这样做:

$res = $stmt->execute();
echo 'Result: '.$res;

但我总是得到:

Result: 1

即使旧密码不正确。

4 个答案:

答案 0 :(得分:15)

不更新行的查询不是错误条件。这只是一个成功的查询,没有改变任何东西。要查看更新是否确实更改了任何内容,您必须使用mysqli_affected_rows()

答案 1 :(得分:3)

您需要使用正在使用的MySQL扩展的affected_rows函数。如果查询失败,则返回0,因为没有匹配的行,如果发生错误则返回-1,或者显示已更改的行数的正数。

答案 2 :(得分:2)

尝试使用mysqli_affected_rows()获取受影响的行数。

答案 3 :(得分:0)

 mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
 printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

试试。