$sql = "dSELECT * FROM users";
$dbQuery = $this->dbal->query($sql);
$dbError = $this->dbal->errorInfo();
$ dbError获取语法错误信息。
如果准备语句使用相同的语句,则在准备后不会返回任何错误。
此代码来自php.net
<?php
/* Provoke an error -- bogus SQL syntax */
$stmt = $dbh->prepare('bogus sql');
if (!$stmt) {
echo "\nPDO::errorInfo():\n";
print_r($dbh->errorInfo());
}
ErrorInfo不能以这种方式工作。 我用
$dbQuery = $this->dbal->prequery($sql);
$dbError = $dbQuery->errorInfo(); // $this->dbal->errorInfo(); doesn't work, too.
答案 0 :(得分:0)
manual说:
如果数据库服务器成功 准备声明,PDO :: prepare() 返回PDOStatement对象。如果 数据库服务器无法成功 准备声明,PDO :: prepare() 返回FALSE或发出PDOException (取决于错误处理)。
这意味着失败时没有对象:你有一个布尔值FALSE
。
尝试将PDO error handling更改为PDO::ERRMODE_EXCEPTION
。