try / catch不能使用PHP PDO

时间:2015-10-22 20:38:52

标签: php sqlite 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)

设置以确保它抛出异常。我在这里看过其他一些关于类似尝试/捕获问题的帖子,但没有一个与此匹配。

2 个答案:

答案 0 :(得分:1)

通过修复Exception ortograph,您是否遇到同样的问题:

PDOExecption替换为PDOException

答案 1 :(得分:0)

除非您拥有该异常的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