作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我有一个正常工作的 postgres 函数(类似于下面);
package."func_SetValues"(id integer, values integer[])
DECLARE
i integer;
BEGIN
FOR i IN 1..array_upper(values, 1)
LOOP
EXECUTE package."func_DoStuff"(id, values[i]);
END LOOP;
END
LANGUAGE 'plpgsql' VOLATILE
还有一个 PHP 脚本 doStuff.php,调用此函数接受值并将其用作 url 编码参数。
$dbconn = pg_connect("host=192.168.1.222 port=5432 dbname=betya user=betya_user password=bettyboo")
or die('Could not connect: ' . pg_last_error());
$query = 'SELECT * FROM package."func_SetValues"($1, $2)';
$result=pg_prepare($dbconn, "qy", $query);
$paramater1=$_REQUEST['id'];
$paramater2=$_REQUEST['arr'];
$result=pg_execute($dbconn, "qy", array($paramater1, $paramater2));
while($e=pg_fetch_assoc($result))
$output[]=$e;
print(json_encode($output));
pg_free_result($result);
pg_close($dbconn);
为了测试 PHP 脚本,以下 URL 是否以 PHP 可以“请求”值并以其理解的方式传递给 postgres 的方式正确编码数组“arr”?还是脚本中需要更多功能才能正确传递给 pg_execute 命令?
http://192.168.1.50/server/doStuff.php?id=1790&arr[]=1788&arr[]=1790&arr[]=1805
最佳答案
是的,需要进一步的代码。该数组必须经过非平凡的转换才能作为参数传递,因为 PG 期望它以文档中所述的文本形式出现: http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO
在另一个问题中:PHP array to postgres array ,一个具有这种效果的 PHP 函数已经提交给 S.O.,它可能正是您所需要的(而且更好,因为它支持递归数组)。
关于php - 如何将数组编码为 URL 参数,在 PHP 中提取并作为函数参数传递给 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005591/
我是一名优秀的程序员,十分优秀!