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 に答える