Php PDO不会向错误主机显示警报
我最近错过了PDO语法,花了几个小时才弄清楚错误是什么。页面上未报告任何错误。这不是为了迎合教规 在这些情况下,如何显示错误 我曾经Php PDO不会向错误主机显示警报,php,pdo,Php,Pdo,我最近错过了PDO语法,花了几个小时才弄清楚错误是什么。页面上未报告任何错误。这不是为了迎合教规 在这些情况下,如何显示错误 我曾经 new PDO ("mysql:localhost; dbname=crud", "root", ""); 当正确的一个是 new PDO ("mysql:host=localhost; dbname=crud", "root", ""); 是的,我有 ini_set ('error_reporting', E_ALL); ini_set ('display_
new PDO ("mysql:localhost; dbname=crud", "root", "");
当正确的一个是
new PDO ("mysql:host=localhost; dbname=crud", "root", "");
是的,我有
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', 1);
激活和条件
try {} catch (PDOException $ e) {}
即使这样,也不会显示错误。PDO具有默认的无提示模式(
PDO::ERRMODE_silent
)。这意味着它不会在坏连接上抛出异常。
因此,您需要将其属性模式设置为抛出异常:
try {
$dbh = new PDO ("mysql:localhost; dbname=crud", "root", "");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Bad Connection. Error: ' . $e->getMessage();
}
此处的更多详细信息:确保您已设置
ini\u集(“错误报告”,全部)代码>和ini_集('display_errors','on')代码>否则将显示空白页。构造函数应在连接到指定数据库失败时引发异常。在这种情况下,您需要使用块来处理错误,因为它的可能副本不是重复的。即使使用这些设置,也不会显示错误。您必须确保ini\u集(“错误报告”,E\u ALL);ini设置(“显示错误”,1)如果在ini文件中禁用,则代码>都位于要应用它们的new\PDO()
行上方。根据,您应该立即看到SQLSTATE[HY000][2002]
异常,因为在使用$PDO->setAttribute()之前必须调用新的PDO
。否则,禁用这两个选项后,您将不会看到任何错误,并且默认情况下,PDO::\u构造确实会引发异常,因此从不调用::setAttribute
。::setAttribute(PDO::ATTR_ERRMODE)
适用于来自PDO实例对象的所有其他方法调用,例如->prepare()
。