準備済みステートメントを使用して古いコードを新しい msqli インターフェイスに移動しています。IN 句を含む SQL ステートメントに問題があります。私は通常これを行います:
$ids = '123,535,345,567,878'
$sql = "SELECT * FROM table WHERE id IN ($ids)";
$res = mysql_query($sql);
これをmysqliと準備済みステートメントに変換して、いくつかの解決策を試しました:
$ids = '123,535,345,567,878'
$ids = implode($ids,',');
$result = $msqli->prepare("SELECT foo,blar FROM table WHERE id IN (?));
$result->bind_param("i", $ids);
$result->execute();
上記は失敗し、配列内の要素数の計算、SQL 文字列内の疑問符の数の変更、および配列内の各要素に対する bind_parm の呼び出しも失敗します。コンマ区切りの文字列を使用するだけでも失敗します。
Google でこれに関する適切なドキュメントを見つけることができないので、どのように問題を解決しましたか?