PDO errorCode 不适用于准备

发布于 2024-11-17 12:44:55 字数 623 浏览 6 评论 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.
$sql = "dSELECT * FROM users";
$dbQuery = $this->dbal->query($sql);
$dbError = $this->dbal->errorInfo();

$dbError gets the syntax error information.

If the same is used for prepared statement it doesn't return any error after prepare.

This code is from 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 doesn't work in this way.
I use

$dbQuery = $this->dbal->prequery($sql);
$dbError = $dbQuery->errorInfo(); // $this->dbal->errorInfo(); doesn't work, too.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥醉 2024-11-24 12:44:55

手册说:

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

这意味着失败时您没有对象:您有一个布尔值 FALSE

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

The manual says:

If the database server successfully
prepares the statement, PDO::prepare()
returns a PDOStatement object. If the
database server cannot successfully
prepare the statement, PDO::prepare()
returns FALSE or emits PDOException
(depending on error handling).

That means that you don't have an object when it fails: you have a boolean FALSE.

Try changing the PDO error handling to PDO::ERRMODE_EXCEPTION.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文