有没有办法一次执行更多的sql准备语句?或者至少使用一些东西来实现这个结果,它可以用交易来模拟吗?
pg_send_query 可以执行更多语句(来自 php 文档“The SQL statement or statements to be executed.”) 但 pg_send_execute 和 pg_send_prepare 只能使用一个语句。
查询参数有如下描述
“参数化的 SQL 语句。必须只包含一个语句。(不允许用分号分隔多个语句。)如果使用任何参数,它们被称为 $1、$2 等。”
来自 http://www.php.net/manual/en/function.pg-send-prepare.php
有没有办法像 pg_send_query 那样一次发送更多的语句来减少 php 和 postgresql 之间的往返?
我不想使用 pg_send_query,因为如果没有参数绑定(bind),我的代码中可能存在 sql 注入(inject)漏洞。
最佳答案
只要您 (a) 使用持久连接(直接或通过池)并且 (b) 不受“n+1 选择"问题。
新连接有一个数量级的开销,如果在每个查询上都完成,这会减慢速度。如果应用程序检索(或操作)相关行集而不是一次执行所有操作,则 n+1 问题会导致产生比实际需要更多的行程。
关于php - 有没有办法在 php 的一次调用中发送多个 postgresql sql 准备语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937832/