try/catch不能与PHP PDO一起工作



我有以下代码:

try {
  $sth = $db->prepare("INSERT INTO provider_specialties (id,specialtyID) VALUES (?,?)");
  $sth->execute(array($provID,$specialtyID));
}
catch(PDOExecption $e) { echo "PDO Error: ".$e->getMessage(); exit; }   

当ok数据插入时,它工作正常。但是,当它输入可能导致外键异常的数据时,它不是捕捉异常,而是用致命错误使脚本崩溃。我有

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
设置

以确保它抛出异常。我在这里看到过其他一些关于类似的try/catch问题的帖子,但没有一个比得上这个。

修复Exception:

PDOExecption替换为PDOException

除非您有该异常的use PDOException;语句,否则从全局命名空间获取它:

try {
  $sth = $db->prepare("INSERT INTO provider_specialties (id,specialtyID) VALUES (?,?)");
  $sth->execute(array($provID,$specialtyID));
}
catch(PDOException $e) { echo "PDO Error: ".$e->getMessage(); exit; }  

另外,您有一个错字(不确定是否仅在问题中或在您的代码中,PDOExecption应该是PDOException)

最新更新