【发布时间】:2011-01-25 13:17:16
【问题描述】:
在转向 PDO 之前,我通过连接字符串在 PHP 中创建了 SQL 查询。如果我遇到数据库语法错误,我可以回显最终的 SQL 查询字符串,自己在数据库上尝试,并对其进行调整,直到修复错误,然后将其放回代码中。
准备好的 PDO 语句更快、更好、更安全,但有一件事困扰着我:我从来没有看到发送到数据库的最终查询。当我在 Apache 日志或自定义日志文件中收到有关语法的错误时(我在 catch 块内记录错误),我看不到导致它们的查询。
有没有办法捕获 PDO 发送到数据库的完整 SQL 查询并将其记录到文件中?
【问题讨论】:
-
它已登录到一个文件:
/var/log/mysql/*。 PDO 绑定参数不会导致语法错误,因此您只需要准备好的 SQL 查询。 -
查看stackoverflow.com/questions/210564/… 中的代码(不在接受的答案中)。并不是说发布了一些更新。
-
简单的一行通过 Composer:github.com/panique/pdo-debug
-
Xeoncross 的回答帮助了我。这是一篇解释如何打开此功能的文章。在许多服务器安装中,它是默认设置的。 pontikis.net/blog/how-and-when-to-enable-mysql-logs
-
试试
var_dump($pdo_instance->debugDumpParams())