サンプルソース
<?php
// table の id に対して次の値が検索条件として渡されてくると仮定
$data = array(2, 7, 14, 23);
/*
* 入力値の数だけ ,? を繰り返し、2文字目以降を取得することで動的に SQL の IN 句のバインドを生成
*
* 1.count(array(2, 7, 14, 23)) で渡されてきた入力パラメーターの数をかぞえる。結果は 4 となる。
* 2.str_repeat(',?', 4) で ',?' を 4 回繰り返す。結果は ,?,?,?,? となる。
* 3.substr(',?,?,?,?', 1) で ,?,?,?,? 文字列の 2 番目から最後までを返す。結果は ?,?,?,? となる。
*/
$sql = 'SELECT * FROM testtable WHERE id IN(' . substr(str_repeat(',?', count($data)), 1) . ')';
// SELECT * FROM testtable WHERE id IN(?,?,?,?) と表示されれば成功!
echo $sql;
?>
使っている関数へのリンクまとめ