gpt4 book ai didi

php - PostgreSQL:将 ARRAY[] 传递给 pg_query_params

转载 作者:可可西里 更新时间:2023-11-01 00:49:34 25 4
gpt4 key购买 nike

我需要做这个查询:

SELECT * FROM property_select(ARRAY[8,9,10,11,12,13,14,15,16,17,19,20,26,28])  

使用 PHP 函数 pg_query_params($prepared, $params)

准备好的查询是:

SELECT * FROM property_select($1);

参数是:["ARRAY[8,9,10,11,12,13,14,15,16,17,19,20,26,28]"]如何将参数作为数组传递给 pg_query_params()

不可能使用 '{8,9,10,11,12,13,14,15,16,17,19,20,26,28}' postgres 数组(因为它可能包含字符串,此数组中的字符串可能包含 , 和 ")。

最佳答案

查找 PostgreSQL 的详细要求 Array Input and Output Syntax在手册中。

基本上,您需要用双引号"" 将具有特殊字符的数组元素括起来。您可以双引号所有元素,但不是必须的。而且,我引用手册(见上文):

To put a double quote or backslash in a quoted array element value, use escape string syntax and precede it with a backslash.

有一个piece of PHP code posted by a user in the manual :

  //$t is array to be escaped. $u will be string literal.
$tv=array();
foreach($t as $key=>$val){
$tv[$key]="\"" .
str_replace("\"",'\\"', str_replace('\\','\\\\',$val)) . "\"
";
}
$u= implode(",",$tv) ;
$u="'{" . pg_escape_string($u) . "}'";

还有一个related answer here on SO :

还要考虑 standard_conforming_strings 的设置.反斜杠可能需要加倍,但 PHP 的 pg-modules 应该会自动为您完成。

关于php - PostgreSQL:将 ARRAY[] 传递给 pg_query_params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com