PostgreSQL PREPARE-запрос с параметрами IN ()

10

Я пытаюсь подготовить запрос из PHP, как:

pg_prepare($con, "prep", "select * from test where tid in ($1)");

и затем выполните это с:

$strpar = "3,4,6,8,10";
pg_execute($con, "prep", array($strpars));

Проблема в том, что я не могу передать ряд значений, созданных, так как приготовление ожидает фиксированное количество параметров. Есть ли способ сделать параметры динамическими?

Фабрицио Маззони
источник

Ответы:

15

Используйте массив для представления серии значений:

pg_prepare($con, "prep", "select * from test where tid=ANY($1::int[])");

$strpar = "{3,4,6,8,10}";
pg_execute($con, "prep", array($strpars));

Приведение int[]в запросе может даже оказаться излишним, если планировщик может самостоятельно вывести тип.

Даниэль Верите
источник