コメントでdecezeが言ったことは正しいです。これが私が以前にこれを行った方法です。
基本的に、 IN
を作成します 配列値をループし、バインドされた名前を追加することにより、SQL文字列の一部。
$allow = array( 'red', 'blue' );
$sql = sprintf(
"Select * from colors where type in ( %s )",
implode(
',',
array_map(
function($v) {
static $x=0;
return ':allow_'.$x++;
},
$allow
)
)
);
これにより、(:allow_0、:allow_1)と入力した色からSelect *
次に、 $ allow
をループします 配列し、bindValueを使用して各変数をバインドします。
foreach( $allow as $k => $v ){
$stmnt->bindValue( 'allow_'.$k, $v );
}
同様の例を示した質問にリンクされたdecezeを実現する前に、これを追加しました。これは、?s
ではなく、名前付きのバインドされた変数を使用して行う方法を示しているため、ここに残しておきます。