Consulta PostgreSQL PREPARE com parâmetros IN ()


10

Estou tentando preparar uma consulta do PHP como:

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

e execute-o com:

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

O problema é que não consigo passar uma série de valores criados, pois o prepare espera um número fixo de parâmetros. Existe alguma maneira de tornar os parâmetros dinâmicos?

Respostas:


15

Use uma matriz para representar a série de valores:

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

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

A conversão para int[]na consulta pode até ser supérflua se o planejador puder inferir o tipo sozinho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.