PostgreSQL SIAPKAN kueri dengan parameter IN ()

10

Saya mencoba menyiapkan kueri dari PHP seperti:

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

dan kemudian jalankan dengan:

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

Masalahnya adalah bahwa saya tidak bisa melewati serangkaian nilai yang dibangun karena mempersiapkan mengharapkan sejumlah parameter. Apakah ada cara untuk membuat parameter menjadi dinamis?

Fabrizio Mazzoni
sumber

Jawaban:

15

Gunakan array untuk mewakili serangkaian nilai:

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

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

Para pemain int[]dalam kueri bahkan mungkin berlebihan jika perencana mampu menyimpulkan jenis dengan sendirinya.

Daniel Vérité
sumber