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

前端之家收集整理的这篇文章主要介绍了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().

原文链接:https://www.f2er.com/php/130463.html

猜你在找的PHP相关文章