从pg_execute()检索生成的SQL

时间:2013-10-15 13:49:26

标签: php postgresql prepared-statement

pg_prepare()会收到一个初步的SQL,然后使用pg_execute()填充参数。

有没有办法获得生成的SQL,以便我可以打印和调试它?

1 个答案:

答案 0 :(得分:2)

可能不是,因为预备语句是服务器端的事情。来自http://www.postgresql.org/docs/9.3/static/sql-prepare.html的文档:

  

预准备语句是服务器端对象,可用于优化性能。执行PREPARE语句时,将解析,分析和重写指定的语句。随后发出EXECUTE命令时,将计划并执行准备好的语句。这种分工避免了重复的分析分析工作,同时允许执行计划依赖于提供的特定参数值。

这意味着即使服务器也没有“填写”原始字符串中的数据,而是在准备过程中解析并“编译”该语句,然后将编译后的语句和数据传递给规划器。