一尘不染

如何调试PDO数据库查询?

php

在转向PDO之前,我通过连接字符串在PHP中创建了SQL查询。如果遇到数据库语法错误,则可以回显最终的SQL查询字符串,然后在数据库中自己尝试,然后对其进行调整,直到修复错误,然后将其重新放入代码中。

预先准备的PDO语句更快,更好,更安全,但是有一件令我困扰的事情:当最终查询发送到数据库时,我再也看不到。当我在Apache日志或自定义日志文件中收到有关语法的错误时(我将错误记录在一个catch块内),我看不到引起它们的查询。

有没有一种方法可以捕获由PDO发送到数据库的完整SQL查询并将其记录到文件中?


阅读 217

收藏
2020-05-26

共1个答案

一尘不染

在数据库日志中查找

尽管 Pascal MARTIN 认为PDO不会一次向数据库发送完整的查询是正确的, 但是ryeguy
关于使用DB的日志记录功能的建议实际上使我可以看到完整的查询是由数据库组装和执行的。

方法如下:(这些说明适用于Windows计算机上的MySQL-您的工作量可能会有所不同)

  • my.ini,下[mysqld]部分中,添加一个log命令,如log="C:\Program Files\MySQL\MySQL Server 5.1\data\mysql.log"
  • 重新启动MySQL。
  • 它将开始记录该文件中的每个查询。

该文件将快速增长,因此请确保在完成测试后将其删除并关闭日志记录。

2020-05-26