[英]PHP PDO Try Catch not Catching
我有這段代碼:
try {
$dbh = new PDO('mysql:host='.$db_host.';dbname='.$db_database, $db_user, $db_pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$dbh->prepare('DELECT userID FROM tblusers');
} catch (PDOException $e) {
echo "Error!: " . $e->getMessage() . "<br/>";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
當我在IDE中使用調試器逐步瀏覽代碼時,即使我的prepare
語句出錯,它也永遠不會進入catch
塊。
我究竟做錯了什么?
我是PDO的新手,可以嘗試/捕獲塊,所以如果這是一個愚蠢的問題,請在這里接受!
嘗試添加$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
模擬的准備好的語句不會與數據庫服務器通信,因此PDO :: prepare()不會檢查該語句。
PDO_mysql默認使用模擬的預處理語句(出於性能原因),因此prepare將不會引發異常。 PDOStatement::execute
不過。
您可以像jonnyynnoj提到的那樣關閉仿真,但是我發現捕獲執行異常通常就足夠了。
try / catch將僅捕獲異常。 其他錯誤(解析錯誤,運行時錯誤等)將不會執行catch塊。
在您的情況下,只會捕獲“ PDOException”類型的異常,其他所有內容都可能會顯示或記錄(取決於php.ini中的錯誤報告指令)。
顯示為錯誤的內容是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.