Как предотвратить отображение ошибки PDO?

#php #pdo

#php #pdo

Вопрос:

Когда возникает ошибка от PDO execute(), по какой-то причине он выдает ошибку?

Как мне это предотвратить…. Я хотел бы сохранить ошибку в $data[‘ошибка’]

 if (!$query->execute()) {
             $data['success'] = 'false';
             echo json_encode($data);
             return;
}
  

Из журнала консоли:

 <br />
<b>Warning</b>:  PDOStatement::execute() [<a href='pdostatement.execute'>pdostatement.execute</a>]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in <b>C:wampwwwsiteapplicationcontrollerContactController.php</b> on line <b>101</b><br />
{"success":"false"}
  

Ответ №1:

Чтобы объединить то, что говорят два других ответчика, сначала настройте PDO на использование исключений вместо ошибок php :

 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  

Затем используйте блок try … catch для обработки любой ошибки.

 $db->beginTransaction();
try{
  /* Do your database things here */
}
catch(Exception $e){
  $db->rollBack();
  return;
}
$db->commit();
return;
  

Вы также можете настроить свой собственный обработчик ошибок php, который можно использовать для регистрации всех ошибок в файле и ничего не отображать.
Смотрите документацию по php : http://php.net/manual/en/function.set-error-handler.php

Ответ №2:

Вы можете изменить режим ошибки по своему вкусу, например:

 $conn = new PDO(...);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  

Пожалуйста, найдите дополнительную ссылку на http://uk.php.net/manual/en/pdo.error-handling.php

Ответ №3:

Используйте PHP try catch

 try{
     doPDO();
}
catch (PDOException $err) {
     echo "pdo failed";
}
  

Комментарии:

1. Это E_WARNING, поэтому try ... catch блок ничего не поймает.

2. Действительно, я пропустил этот момент. Извините. Действительно, приведенный выше ответ тот самый ;). Спасибо, аликс