2011-04-28 83 views
3

当PDO执行()出现错误时,由于某种原因它输出错误?如何防止显示PDO错误?

如何防止....我想一个错误存入$数据[ '错误']

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"} 

回答

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

0

使用PHP的尝试捕捉

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

这是一个E_WARNING,所以'try ... catch'块不会捕获任何东西。 – 2011-04-28 11:32:32

+1

的确我错过了这一点。抱歉。事实上,上面的答案是唯一的;)。感谢alix – CoolStraw 2011-04-28 12:29:12