Как обработать ошибку в PDO?

$sql = $pdo->exec("INSERT INTO comment (news_id, name, message, date, ip) VALUES (" . $pdo->quote($news_id) . ", " . $pdo->quote($name) . ", " . $pdo->quote($message) . ", " . $pdo->quote($date) . ", " . $pdo->quote($ip) . ")");

Если этот запрос выполняется то echo 1, если нет echo 0
  • Вопрос задан
  • 220 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Тебе это не нужно.
В штатной ситуации запрос отрабатывает всегда.
В нештатной никаких эхо не должно быть - скрипт должен аварийно завершиться, безо всяких ноликов.

Каким-то особым образом обрабатывать ошибки ПДО не нужно - в них нет ничего особенного. поэтому ошибки работы с БД должны обрабатываться точно так же, как и любые другие ошибки в скрипте, единым обработчиком.

Чтобы известить пользователя об успешности запроса, никаких специальных действий предпринимать не нужно.
Просто пишешь код извещения под кодом вставки.
Если произошла ошибка, то будет показана страница с ошибкой.
А если все нормально, то выполнится код извещения. Я бы записывал сообщение в сессию, делал редирект ,И показывал из сессии flash message.

И, как правильно написал Defman21 - никаких exec() - только prepare/execute.
Если это кажется длинным, то взять удобный враппер, код станет значительно короче и читабельнее:
$sql = "INSERT INTO comment (news_id, name, message, date, ip) VALUES (?,?,?,?,?)";
DB::run($sql, [$news_id, $name, $message, $date, $ip]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Defman21
@Defman21
Оффтоп про ПДО: существуют плейсхолдеры.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы