如何正確配置PDO 來處理PHP 中的準備查詢錯誤
使用PDO PHP 執行SQL 查詢時,正確處理錯誤至關重要。 prepare() 方法可以產生 MySQL 錯誤,但預設設定可能會阻止顯示錯誤。
設定錯誤模式
捕獲prepare() 方法中的錯誤,將 PDO 屬性 PDO::ATTR_ERRMODE 設為 PDO::ERRMODE_EXCEPTION。這會在發生錯誤時拋出異常。
停用模擬
此外,停用 PDO::ATTR_EMULATE_PREPARES 功能以確保 MySQL 立即處理語句。否則,在執行之前可能無法偵測到錯誤。
範例
以下範例示範如何設定 PDO 以正確處理錯誤:
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); try { $pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)'); } catch (PDOException $e) { // Handle the error message $errorMessage = $e->getMessage(); }
錯誤輸出
當嘗試執行無效查詢時,上面的範例會列印(或記錄)錯誤訊息:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.DoesNotExist' doesn't exist
以上是如何正確處理PHP中的PDO準備語句錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!