Here is my case:
$sql = 'UPDATE user SET password = ? WHERE username = ? AND password = ?';
if($stmt->prepare($sql)) {
$stmt->bind_param('sss', $newPass, $_SESSION['username'], $oldPass);
$stmt->execute();
}
Now, how can I see if the UPDATE query is successfully executed? And more precisely how can I see if the old password and username are correct so that I can store the new password? I've tried by doing this:
$res = $stmt->execute();
echo 'Result: '.$res;
But I always get:
Result: 1
even if the old password is not correct.
A query which updates no rows is NOT an error condition. It's simply a succesful query that didn't change anything. To see if an update actually did change anything, you have to use mysqli_affected_rows()
Try use
mysqli_affected_rows()
to get the number of affected rows.You need to use the
affected_rows
function of the MySQL extension you are using. This will return 0 if the query failed because no rows matched, -1 if an error occurred, or a positive number showing the number of rows that were changed.Try that.