首页 > 后端开发 > php教程 > 如何从 PDO 准备语句中检索最终的参数插入 SQL 查询?

如何从 PDO 准备语句中检索最终的参数插入 SQL 查询?

Mary-Kate Olsen
发布: 2024-12-15 17:53:14
原创
193 人浏览过

How Can I Retrieve the Final, Parameter-Interpolated SQL Query from a PDO Prepared Statement?

从 PDO 准备语句中检索原始 SQL 查询

在准备语句的上下文中,“原始 SQL 查询字符串”的概念并不简单。当在准备好的语句上调用 PDOStatement::execute() 时,执行的 SQL 语句与准备好的语句本身不同。

访问插入参数值的最终 SQL 查询并不是一个简单的过程准备好的陈述所固有的。参数没有与客户端的prepared语句合并,导致PDO无法访问。

SQL语句在prepare()操作时发送到数据库服务器,而参数在execute()时单独传输)被称为。 MySQL 维护一个通用查询日志,该日志显示了执行()之后带有嵌入值的最终 SQL。但是,此日志位于 PDO 外部,并不代表“原始”查询字符串。

一种解决方法涉及设置 PDO 属性 PDO::ATTR_EMULATE_PREPARES。在此模式下,PDO 在执行 SQL 查询之前将参数插入到 SQL 查询中。但是,此方法会损害准备好的语句的效率。

PDOStatement 对象的 $queryString 属性可能看起来是一个潜在的解决方案,但它仅在对象初始化期间设置,并不反映参数插值。将重写的查询作为一项功能公开是有益的,但除非使用 PDO::ATTR_EMULATE_PREPARES,否则它仍然无法满足要求。

利用 MySQL 服务器的常规查询日志提供了一种解决方法,因为它记录了重写的查询。尽管如此,这仅适用于日志记录期间,不适用于查询执行。

以上是如何从 PDO 准备语句中检索最终的参数插入 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板