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[]в запросе может даже оказаться излишним, если планировщик может самостоятельно вывести тип.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.