如何将 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 函数

如何将参数传递给进程

如何通过反射将参数传递给方法

如何将库类或对象传递给片段?

如何将参数传递给快速完成的函数

如何将参数传递给由 fork() 创建的进程