调试 PDO 准备语句时,访问原始 SQL 查询字符串通常很有帮助被处决。然而,目前还不清楚如何做到这一点,因为准备好的语句通常涉及将参数数据与实际查询分离。
与常规 SQL 语句不同,其中查询和参数一起发送到数据库,准备好的语句分为两部分:
这种分离可以防止SQL注入攻击。但是,这也意味着 PDO 无法直接访问具有内插参数值的组合查询字符串。
要访问内插查询字符串,有一个选项是设置 PDO::ATTR_EMULATE_PREPARES 属性。此模式强制 PDO 在客户端模拟准备好的查询,在将查询和参数发送到数据库之前将它们组合起来。
但是,此方法需要注意:
如果您使用 MySQL,则可以启用通用查询日志来捕获内插查询字符串。然而,这种方法要求查询已经被执行。
不幸的是,没有可靠的方法可以直接从 PDO 获取内插查询字符串,而无需借助模拟或日志记录。
以上是如何查看我的 PDO 准备语句执行的实际 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!