我有一个脚本,我通过用PDO预处理语句和查询替换内联mysql查询来更新。当查询正确或返回结果时,它工作正常。但是,当查询语句中出现错误时,try / catch die不起作用。例如,我使用了这个测试代码:
$query = $this->dbh->prepare('SELEC menu_item, hyperlink, admin FROM top_menu;');
try
{
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC));
die("success");
}
catch(Exception $e)
{
die("fail");
}
查询错误(“SELEC”而不是“SELECT”),因此脚本的流程应该进入异常/错误括号,但它不会;我一直在“成功”。我尝试了catch(PDOException $ e)而不是catch(Exception $ e),结果完全相同。
我做错了什么,我该如何解决这个问题?感谢。
答案 0 :(得分:1)
类似的问题已被回答here,除非你告诉它,否则PDO不会抛出异常。你跑了吗?
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
在PDO对象上。
答案 1 :(得分:-1)
对于PDO的fetch()失败,返回FALSE。没有例外。