web-dev-qa-db-ja.com

IN()パラメーターを使用したPostgreSQL PREPAREクエリ

私はPHPからのクエリを準備しようとしています:

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

次にそれを実行します:

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

問題は、prepareが固定数のパラメーターを想定しているため、構築された一連の値を渡すことができないことです。パラメータを動的にする方法はありますか?

10

配列を使用して一連の値を表します。

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

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

クエリ内のint[]へのキャストは、プランナがそれ自体で型を推測できる場合は、不必要になることもあります。

15
Daniel Vérité