Consulta de preparación de PostgreSQL con parámetros IN ()

10

Estoy tratando de preparar una consulta desde PHP como:

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

y luego ejecutarlo con:

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

El problema es que no puedo pasar una serie de valores creados ya que prepare espera un número fijo de parámetros. ¿Hay alguna forma de hacer que los parámetros sean dinámicos?

Fabrizio Mazzoni
fuente

Respuestas:

15

Use una matriz para representar la serie 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));

La conversión a int[]en la consulta podría incluso ser superflua si el planificador puede inferir el tipo por sí mismo.

Daniel Vérité
fuente