PostgreSQL PREPARE-Abfrage mit IN () -Parametern


10

Ich versuche eine Abfrage von PHP vorzubereiten wie:

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

und dann ausführen mit:

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

Das Problem ist, dass ich keine Reihe von Werten übergeben kann, die erstellt wurden, da prep eine feste Anzahl von Parametern erwartet. Gibt es eine Möglichkeit, die Parameter dynamisch zu gestalten?

Antworten:


15

Verwenden Sie ein Array, um die Reihe von Werten darzustellen:

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

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

Die Umwandlung int[]in die Abfrage ist möglicherweise sogar überflüssig, wenn der Planer den Typ selbst ableiten kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.