2011-04-28 98 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