gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:40:25 25 4
gpt4 key购买 nike

我对 MySQLi 非常熟悉并且正在尝试 PDO,我听说它更好。我正在浏览本教程 here .他们说当设置 PDO::ERRMODE_EXCEPTION 时 PDO 会抛出异常,而我们不小心对查询做了一些错误的事情(例如,键入错误,DELECT 而不是 SELECT)。我输入了相同的错误查询以查看本地环境中的错误和异常消息。我在我的 32 位 Windows 7 PC 上安装了最新的 WAMP 以及 PHP 5.5、MySQL 5.6 和 Apache 2.4.9,但没有得到我期望的结果,没有抛出异常。我尝试了教程中发布的相同代码:

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()

关于php - PDO 不会在错误的 SQL 查询上抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35020308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com