10

这是我的情况:

$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

4 回答 4

20

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

于 2012-10-20T15:59:22.927 回答
4

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

于 2012-10-20T15:59:36.213 回答
3

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

于 2012-10-20T15:59:24.540 回答
1
 mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
 printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

试试看。

于 2016-10-07T19:33:22.277 回答