在转向PDO之前,我通过连接字符串在PHP中创建了SQL查询。如果遇到数据库语法错误,则可以回显最终的SQL查询字符串,然后在数据库中自己尝试,然后对其进行调整,直到修复错误,然后将其重新放入代码中。
预先准备的PDO语句更快,更好,更安全,但是有一件令我困扰的事情:当最终查询发送到数据库时,我再也看不到。当我在Apache日志或自定义日志文件中收到有关语法的错误时(我将错误记录在一个catch块内),我看不到引起它们的查询。
catch
有没有一种方法可以捕获由PDO发送到数据库的完整SQL查询并将其记录到文件中?
尽管 Pascal MARTIN 认为PDO不会一次向数据库发送完整的查询是正确的, 但是ryeguy 关于使用DB的日志记录功能的建议实际上使我可以看到完整的查询是由数据库组装和执行的。
方法如下:(这些说明适用于Windows计算机上的MySQL-您的工作量可能会有所不同)
my.ini
[mysqld]
log
log="C:\Program Files\MySQL\MySQL Server 5.1\data\mysql.log"
该文件将快速增长,因此请确保在完成测试后将其删除并关闭日志记录。