Requête PostgreSQL PREPARE avec paramètres IN ()


10

J'essaie de préparer une requête à partir de PHP comme:

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

puis l'exécuter avec:

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

Le problème est que je ne peux pas transmettre une série de valeurs construites car prepare attend un nombre fixe de paramètres. Existe-t-il un moyen de rendre les paramètres dynamiques?

Réponses:


15

Utilisez un tableau pour représenter la série de valeurs:

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

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

Le transtypage int[]dans la requête peut même être superflu si le planificateur est capable de déduire le type par lui-même.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.