我在使用准备好的语句通过 PDO 发送的一些更复杂的查询时遇到了麻烦。虽然 errorInfo() 在显示语法错误方面很有用,但它并没有真正显示逻辑错误以及查询的实际部分。
有没有办法回显 PDO 最后执行的查询?如,实际查询发送到数据库?该类应该将它存储在正确的地方,因为它确实将它发送到某个地方的数据库?有什么方法或某种方法可以捕捉到它吗?
目前我的调试系统只回显查询?代替实际参数,如果错误是在逻辑上,这不太有用。
谢谢!
您是否尝试过 PDOStatement::debugDumpParams?它为您提供有关参数的详细信息。
从手册:
将准备好的语句包含的信息直接转储到输出中。它将提供正在使用的 SQL 查询、使用的参数数量 (Params)、参数列表,以及它们的名称、类型 (paramtype) 作为一个整数、它们的键名或位置、值以及查询中的位置(如果 PDO 驱动程序支持,否则为 -1)。
考虑尝试mysql-proxy: http: //lamp-dev.com/wp-content/uploads/mysql-proxy.zip
你在 php 中使用什么扩展并不重要,它只是在 php 和 mysql 之间充当代理,并“按原样”显示所有查询。您只需要在 start.bat 中更改 DSN。请注意,此版本是基于 Windows 的。
您需要在 php 中更改连接,然后将其连接到 mysql-proxy
忘了说这只有在你使用mysql时才有意义,你没有指定你的RDBMS,PDO可能与不同的驱动程序一起工作