Как убедиться что запрос к БД выполнен?

Ситуация: пользователь забыл пароль и меняет его на новый (такой же), пароль солится и их хеши со старым равны. MySQL (PDO) делает запрос и возвращает что было изменено 0 строк.
Всё верно, изменений с точки зрения БД не было, данные не изменились, но по сути операция прошла успешно. Как отследить это и сказать пользователю что всё хорошо. Смотреть не возникло ли ошибок при запросе к БД и если нет, то считать что всё ок?
Или тут транзакцию можно использовать?
  • Вопрос задан
  • 335 просмотров
Решения вопроса 2
Melkij
@Melkij
PostgreSQL DBA
Переключите PDO::ATTR_ERRMODE в PDO::ERRMODE_EXCEPTION. Если exceptin прилетел - значит запрос выполнен не был.
Не было исключения - значит запрос выполнен.

их хеши со старым равны

И это криптографически плохо. См. стандартные password_hash + password_verify
Ответ написан
DarkRaven
@DarkRaven
разработка программного обеспечения
Поддержу ответ Melkij
Используйте предложенные функции для криптографии, с точки зрения безопасности они оптимальны. Проверку паролей, как я указал в комментарии, делаем через php.net/manual/ru/function.password-verify.php
Если таких функций нет, то нас спасет https://github.com/ircmaxell/password_compat
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Не надо ни в чем убеждаться.

Эти бессмысленные телодвижения, которые так любят пользователи похапе - тяжелое наследие царского режима и видеокурсов "Начни грести бабло за 3 урока".

Ни одна нормальная программа не занимается такой ерундой, как проверка каждого несчастного запроса на ошибки, и не начинает причитать "ой, у нас такой-то запрос сломался" если ошибка произошла.

Не надо ни в чем убеждаться. Не надо смотреть ни на какие ошибки запросов.
Надо ПРОСТО сказать пользователю, что все хорошо, без всяких условий. Ошибки, если будут, обрабатываются совсем в другом месте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы