如何从 PDO 中挤出错误消息?
我似乎无法从 PDO 收到任何错误消息:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
它仅给出:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
setAttribute 没有任何帮助。
这是 PHP 5.3.3 Apache 2.0 处理程序
已启用 MySQL 的 PDO 驱动程序
客户端 API 版本 mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
我可以做什么来获取错误信息?
I can't seem to get any error message from PDO:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
It is giving out only:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
setAttribute doesn't help anything.
It's PHP 5.3.3 Apache 2.0 Handler
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
What can I do to get error information?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
setAttribute将导致 PDO 抛出错误或异常 - 最新的当您执行查询时。
对于模拟的准备好的语句,
prepare()
中没有检查:但是当查询发送到服务器时,
execute()
中将会有一个。但是,自从 mySQL 4.1 起,mySQL 驱动程序就支持本机准备好的语句,因此这不适用。使用
必须导致您使用的查询出现异常。
setAttribute will cause PDO to throw up errors or exceptions - the latest when you execute the query.
For emulated prepared statements, there is no check in
prepare()
:But there will be one in
execute()
when the query gets sent to the server.However, the mySQL driver supports native prepared statements since mySQL 4.1 anyway, so this shouldn't apply. Using
must cause an exception for the query you use.
我也试图在数据库句柄级别从
errorInfo()
获取信息,但最终我使用PDOStatement::errorInfo()
从语句级别获取信息每个 PHP 网站:
I too was trying to get the information from
errorInfo()
at the database handle level, but I ended up getting the information from the statement level withPDOStatement::errorInfo()
Per PHP web site:
这将打印错误代码及其相应的详细消息。
建议:这只是一个演示。仅用于调试目的。不要在发布版本中向公众显示错误消息。
This will print error code as well its corresponding detailed message.
Advice: this is just a demonstration. Just use for debugging purpose. Don't enable to show error messages to the public in a release version.
您需要首先
执行
查询,然后检查错误:所以这样做:然后检查错误。然后你会得到错误(如果有的话)。
You need to first
execute
the query and then check for errors: So do it like this:and then check for errors. Then you will get errors, if any.