以下是我的案例:
$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
即使旧密码不正确。
答案 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));
试试。