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?

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.