调试 PDO 查询,如何


Debugging PDO queries, how?

我在使用预准备语句通过PDO发送的一些更复杂的查询时遇到了问题。虽然 errorInfo() 在显示语法错误方面很有用,但它并没有真正显示逻辑错误以及查询的实际部分。

有没有办法回显PDO最后执行的查询?例如,发送到数据库的实际查询?类应该将其存储在正确的位置,因为它确实将其发送到某个地方的数据库?有没有办法或某种方法可以抓住它?

目前,我的调试系统仅使用?代替实际参数回显查询,如果错误在逻辑中,则用处不大。

谢谢!

你试过PDOStatement::d ebugDumpParams吗?它为您提供有关参数的详细信息。

从手册:

将预准备语句包含的信息直接转储到输出上。它将提供正在使用的 SQL 查询、使用的参数数 (Params)、参数列表及其名称、整数类型 (paramtype)、它们的键名或位置、值以及查询中的位置(如果 PDO 驱动程序支持,否则将为 -1)。

考虑尝试 mysql-proxy: http://lamp-dev.com/wp-content/uploads/mysql-proxy.zip

你在php

中使用什么扩展并不重要,它只是在php和mysql之间充当代理,并"按原样"显示所有查询。您只需要在 start.bat 中更改 DSN。请注意,此版本是基于窗口的。

您需要在php中更改连接,然后将其连接到mysql-proxy

忘了说这只有在您使用mysql时才有意义,您没有指定RDBMS,PDO可能适用于不同的驱动程序