prepare では in(:list)とできない 。PHPのPDOでbindParamした時に、INの場合は複数値を配列で渡せない。
PDOStatement::execute() をコールする際には、 文に渡すパラメータにはそれぞれ固有のパラメータマークを設定する必要があります。 ひとつのプリペアドステートメントの中で、同じ名前のパラメータマークを 複数使用することはできません。SQL 文の IN() 句などで、 ひとつのパラメータに複数の値を 割り当てることはできません。
というわけで where in ( :list )
という書き方ができないです。
そこでどうするのか?
<?php $SQL = "$SQL where ".implode(' AND ' , $conds); $conds[] = " id in ( ". implode(",", array_map( create_function('$v','return "?";'),$id_list ) ). " ) “;
とやる、これしか無い。配列の中身をまとめてBindするしかないんですよねえ