如何将url-array-parameter传递给pg_execute

时间:2017-04-12 18:52:06

标签: php sql arrays postgresql

我使用test.php?id=2,4,5,6,7

等网址发送参数

使用以下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都在db中。

具体来说,我试图在postgres db中插入一个int数组。

任何人都可以帮忙吗?

我也试过

json_encode(explode(',', $id_array));

1 个答案:

答案 0 :(得分: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://stackoverflow.com/a/36930781/5546267