PHP で MySQL プリペアド ステートメントを構築する場合、可変数の引数を持つクエリをどのように処理するかという問題が生じます。たとえば、次のようなクエリを考えてみましょう。
SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
IN 句の ID の数は実行ごとに変化します。
対処するにはさまざまなアプローチが存在します。このチャレンジ:
解決策 1: ダミー変数と複数の呼び出し
解決策 2: 準備されていないクエリ
ただし、他のオプションの方がより効率的です:
一時テーブルアプローチ
Dynamic IN 句
例:
$dbh = new PDO(...); $parms = [12, 45, 65, 33]; $inclause = implode(',', array_fill(0, count($parms), '?')); // = ?,?,?,? $preparesql = sprintf('SELECT age, name FROM people WHERE id IN (%s)', $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);
大規模なセットの場合は、最初のアプローチの方が効率的である可能性があります。一方、2 番目は小さいものに適しています。
以上がMySQL のプリペアドステートメントで動的にサイズ変更されたパラメータリストを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。