php – PDO不会在错误的SQL查询上抛出异常

我对 MySQLi非常熟悉,正在尝试PDO,我听说它更好.我正在浏览目前的 here教程.他们说当PDO :: ERRMODE_EXCEPTION设置时PDO抛出一个异常,我们不小心对查询做了一些错误(例如,输入错误,DELECT而不是SELECT).我键入了相同的错误查询,以查看本地环境中的错误和异常消息.我在我的32位Windows 7 PC中安装了PHP 5.5,MysqL 5.6和Apache 2.4.9的最新WAMP,但没有得到我所期望的,没有异常被抛出.我尝试了教程中发布的相同代码
try {
$DBH = new PDO("MysqL:host=$host;dbname=$dbname",$user,$pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );

# UH-OH! Typed DELECT instead of SELECT!
$DBH->prepare('DELECT name FROM people');
}
 catch(PDOException $e) {
 echo "I'm sorry,Dave. I'm afraid I can't do that.";
 file_put_contents('PDOErrors.txt',$e->getMessage(),FILE_APPEND);
}

没有PDOError.txt,没有错误消息.教程或我的环境有问题吗?或者有些情况下PDO无法抛出异常?我为MysqL安装了PDO驱动程序.

它可能会失败,因为查询永远不会被执行,正在等待进一步的指示.

既然它没有发现任何事情,那么它在PDO的眼中就是有效的;这是我的比喻.

执行它,你会看到它会抛出异常.

要么是在准备之后执行它,要么是简单的 – > query()而不是 – > prepare().

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...