[英]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;
}
將此代碼添加到頁面頂部:
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.