Zapytanie PostgreSQL PREPARE z parametrami IN ()

10

Próbuję przygotować zapytanie z PHP, takie jak:

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

a następnie uruchom go za pomocą:

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

Problem polega na tym, że nie mogę przekazać szeregu wartości zbudowanych, ponieważ preparat oczekuje stałej liczby parametrów. Czy jest jakiś sposób, aby parametry były dynamiczne?

Fabrizio Mazzoni
źródło

Odpowiedzi:

15

Użyj tablicy do reprezentowania szeregu wartości:

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

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

Rzutowanie int[]w kwerendzie może być nawet zbędne, jeśli planista jest w stanie samodzielnie określić typ.

Daniel Vérité
źródło