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


10

私は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が固定数のパラメーターを想定しているため、構築された一連の値を渡すことができないことです。パラメータを動的にする方法はありますか?

回答:


15

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

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[]クエリでのキャスト先は、プランナがそれ自体で型を推測できる場合、不必要になることさえあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.