如何将 url-array-parameter 传递给 pg_execute
Posted
技术标签:
【中文标题】如何将 url-array-parameter 传递给 pg_execute【英文标题】:How do I pass url-array-parameter to pg_execute 【发布时间】:2017-04-12 18:52:05 【问题描述】:我正在使用test.php?id=2,4,5,6,7
之类的 URL 发送参数
并使用以下 php :
$id_array = $_GET['id'];
$id_array = explode(',', $id_array);
pg_prepare($conn, 'test', 'select 1 from my_test_table where id = ANY ($1)');
pg_execute($conn, 'test', array($id_array);
我不断得到类似的东西
malformed array literal: "["73","123","412"]"
和类似的错误。我无法弄清楚将数组传递给我的 pg_execute 的正确方法,但我需要确保在进行插入之前所有的 id 都在数据库中。
具体来说,我正在尝试在 postgres 数据库中插入一个 int 数组。
有人可以帮忙吗?
我也试过了
json_encode(explode(',', $id_array));
【问题讨论】:
【参考方案1】:应该这样做:
pg_prepare($conn, 'test',
" SELECT 1
FROM my_test_table
WHERE id = ANY (string_to_array($1, ',')) ");
pg_execute($conn, 'test', array($_GET['id']));
我们使用 postgresql string_to_array 函数,就像上面的答案一样 https://***.com/a/36930781/5546267
【讨论】:
我做的唯一改变是 id 是一个 int 所以我像这样转换函数: string_to_array($1, ',')::int[] 。除此之外,这正是我想要的。谢谢!以上是关于如何将 url-array-parameter 传递给 pg_execute的主要内容,如果未能解决你的问题,请参考以下文章
如何将 POST 参数传递给 Durable Function,然后将此参数传递给 Timer Triggered 函数