一尘不染

在带有PDO的PHP中,如何检查最终的SQL参数化查询?[重复]

mysql

这个问题已经在这里有了答案

从PDO准备好的语句中获取原始SQL查询字符串 (16个答案)

3年前关闭。

在PHP中,当使用带有参数化查询的PDO访问MySQL数据库时,如何检查最终查询(在替换了所有令牌之后)?

有没有办法检查数据库真正执行了什么?


阅读 294

收藏
2020-05-17

共1个答案

一尘不染

因此,我想我将最终回答我自己的问题,以便为记录提供完整的解决方案。但是必须感谢本·詹姆斯和凯拉什·巴杜,他们为此提供了线索。

简短回答
正如本·詹姆斯所说:
完整的SQL查询在PHP端不存在,因为令牌查询和参数分别发送到数据库。仅在数据库方面,存在完整查询。

即使试图在PHP端创建一个用于替换令牌的函数,也不能保证替换过程与SQL相同(如令牌类型,bindValue与bindParam等复杂的东西,…)

解决方法
这是我详细介绍Kailash
Badu的答案的地方。通过记录所有SQL查询,我们可以看到服务器上实际运行的内容。使用mySQL,可以通过更新my.cnf(或Wamp服务器中的my.ini)并添加如下一行来完成:

log=[REPLACE_BY_PATH]/[REPLACE_BY_FILE_NAME]

只是不要在生产中运行它!!!

2020-05-17