从PDO预处理语句中检索(或模拟)完整查询

Mic*_*erx 13 php pdo prepared-statement

我两年前偶然发现了这个问题.

有没有办法在预准备语句上调用PDOStatement :: execute()时获取原始SQL字符串?出于调试目的,这将非常有用.

获胜的答案说明了这一点

[...]如果设置PDO属性PDO :: ATTR_EMULATE_PREPARES,您也可以获得所需的内容.在此模式下,PDO将参数插入到SQL查询中,并在执行()时发送整个查询.

但它没有提到如何获得结果查询字符串.我知道这是一个糟糕的主意,但在调试模式下这并不会让我感到困扰.有人知道怎么做这个吗?

PS如果有某种方式我可以重新开放/引起对原来两年前主题的关注,而不是打开一个新主题,请告诉我.

Chr*_*rez 13

我相信在这个问题中引用的原始问题中提到了这一点.然而,实际上应该有一种检索这些数据的方法.

PDOStatement::debugDumpParams

但是目前它没有记录在案.有一个错误报告和补丁在这里提交http://bugs.php.net/bug.php?id=52384,以防任何人有兴趣投票.在修复之前,您似乎只能使用PDO :: ATTR_STATEMENT_CLASS属性来使用查询日志记录或设置自定义语句类.