Dmi*_*try 3 php arrays postgresql
我需要做这个查询:
SELECT * FROM property_select(ARRAY[8,9,10,11,12,13,14,15,16,17,19,20,26,28])
Run Code Online (Sandbox Code Playgroud)
使用PHP函数pg_query_params($prepared, $params).
准备好的查询是:
SELECT * FROM property_select($1);
Run Code Online (Sandbox Code Playgroud)
参数是:["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 数组输入和输出语法的详细要求.
基本上,您需要在双引号中包含带有特殊字符的数组元素"".您可以对所有元素进行双引号,但您不必这样做.并且,我引用手册(见上文):
要在带引号的数组元素值中放置双引号或反斜杠,请使用转义字符串语法并在其前面加上反斜杠.
//$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) . "}'";
Run Code Online (Sandbox Code Playgroud)
还要考虑设置standard_conforming_strings.反斜杠可能需要加倍,但PHP的pg-modules应该自动为你做.
| 归档时间: |
|
| 查看次数: |
3278 次 |
| 最近记录: |