0
$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.
4

1 回答 1

0

手册说:

如果数据库服务器成功准备语句,PDO::prepare() 返回一个 PDOStatement 对象。如果数据库服务器无法成功准备语句,则 PDO::prepare() 返回 FALSE 或发出 PDOException(取决于错误处理)。

这意味着当它失败时你没有对象:你有一个 boolean FALSE

尝试将PDO 错误处理更改为PDO::ERRMODE_EXCEPTION.

于 2011-06-27T18:07:29.077 回答