如何防止显示PDO错误?

时间:2011-04-28 11:14:27

标签: php pdo

当PDO execute()出错时,出于某种原因输出错误?

如何防止这种情况....我想将错误存储到$ data ['error']

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:\wamp\www\site\application\controller\ContactController.php</b> on line <b>101</b><br />
{"success":"false"}

3 个答案:

答案 0 :(得分:4)

要结合其他两个anwsers所说的内容,首先将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

答案 1 :(得分:3)

您可以根据自己的喜好更改错误模式,例如:

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

请在http://uk.php.net/manual/en/pdo.error-handling.php

找到进一步的参考资料

答案 2 :(得分:0)

使用PHP的try catch

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