簡體   English   中英

PHP嘗試捕獲未捕獲PDOException / Exception

[英]PHP try catch not catching PDOException/Exception

我在try catch塊中有一些PDO插入代碼。 我故意將錯誤的值傳遞給execute函數,以便插入將失敗。 即; 在聲明為主列的列上插入重復值。 經測試,插入查詢在控制台上執行時失敗,並顯示錯誤:

#1062 - Duplicate entry '0' for key 'PRIMARY' 

但是,我的try-catch塊未捕獲此異常。 是因為PHP不會為重復輸入拋出異常嗎? 我是PHP新手。 一直在網上搜索,但似乎找不到線索:

try
 {  
     $query = $conn->prepare($preSQL);
     $query->execute($postSQL);  //$postSQL is the associative array for placeholders
     $dataAdded = $query->rowCount();
     $lastInsertId = $this->conn->lastInsertId();
 }
catch(PDOException $e)
 {
    fwrite($myfile,PHP_EOL);
    fwrite($myfile,$e->getMessage());
    fclose($myfile);
    return false;
 }
  1. 步:

將此代碼添加到頁面頂部:

error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set("display_startup_errors", 1);

僅在開發模式下使用error_reporting(E_ALL)!

在$ conn = new PDO(...)之后添加下面的代碼;

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

您可能需要包括PDOException,例如

use PDO;
use PDOException;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM