以前からSQLのINをプリペアードステートメントで使うたびに躓くのだけど、これを機会に正攻法を確認しておく。
1)プリペアードステートメントを以下のように作成する
$params = array('aaa', 'bbb');
$in_param = implode(',', array_fill(0, count($params), '?');
$sql = '...WHERE IN('.$in_param.')';
$stmt = $mysqli->prepare($sql);
2)バインドする
$stmt->bind_param(str_repeat('s', count($params)), ...$params);
ポイントは、PHP5.6から使えるようになった「... による可変個引数関数」。