根据要求,我重新格式化问题:
对于以下代码:
$newPDO=new PDO($DSN,$USER,$PASS);
$newPDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$SQL='SOME SQL STATEMENT MAYBE FAULTY';
try{
$Query=$newPDO->Prepare($SQL)
$Success=$Query->execute();
if(!$Success)
echo('A');
}
catch(PDOException $e)
{
echo('B');
}
问题是,是否可以看到打印的“A”?对于不同类型的$SQL
选择或插入,答案会有所不同吗?
原始问题:
- 首先,我将属性设置为 PDO::ATTR_ERRMODE、PDO::ERRMODE_EXCEPTION,这样,我认为,当 execute() 遇到来自 DB 的错误时,它应该抛出异常。然后我意识到,如果这是真的,我什至不必检查 execute() 的返回,只要抛出的异常与返回的“假”相同。我只需要从外面抓。如果没有任何内容,则查询应该没问题。
但我不确定这一点,因为 execute() 默认情况下不会根据手册抛出异常。当我插入一些东西时,我尝试了一些操作,比如重复 PK 和违反唯一约束。支持我的断言:PDO 将抛出异常,我可以从 DB 获取详细的错误消息。但是我不知道这是否是普遍真理. 当我将 ERRMODE 设置为最大值时,是否有可能从 execute() 中得到一个错误,并且没有抛出 PDOEXCEPTION?*