Вот мой случай:
$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
даже если старый пароль неверен.
Запрос, который не обновляет строки, НЕ является условием ошибки. Это просто успешный запрос, который ничего не менял. Чтобы убедиться, что обновление действительно что-то изменило, вы должны использовать mysqli_affected_rows ()
Вам нужно использовать функцию affected_rows
используемого расширения MySQL. Это приведет к возврату 0, если запрос завершился неудачно, потому что никакие строки не совпали, -1, если произошла ошибка, или положительное число, показывающее количество строк, которые были изменены.
Попробуйте использовать mysqli_affected_rows()
чтобы получить количество затронутых строк.
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50"); printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));
Попробуй это.