php - 有没有办法在 php 的一次调用中发送多个 postgresql sql 准备语句?

标签 php database postgresql

有没有办法一次执行更多的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 问题会导致产生比实际需要更多的行程。

参见:What is the n+1 selects problem?

关于php - 有没有办法在 php 的一次调用中发送多个 postgresql sql 准备语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937832/

相关文章:

php - 使用 Zend_Session_Namespace 创建 session 和访问变量

php - jQuery AJAX 表单不发布结果

mysql - 使用 mySql (phpMyAdmin) 创建一个从另一个表获取数据的表

sql - 向一个 SQLConnection 发送多个命令

匹配的正则表达式以

php - 检查文件的最后一行下面是否有东西

具有多个外连接的 SQL 查询

sql - 如何快速批量更新postgres中的序列号

sql - 在 postgres 中创建触发器

PHP ZipArchive 无法破坏 zip 上下文