可変変数リストを含む MySQL 準備済みステートメント
可変数の引数を使用して MySQL ステートメントを準備するのは難しい場合があります。これが発生する 1 つのシナリオは、実行ごとに異なる数の ID を受け入れる IN 句です。
考えられる解決策 1: ダミー値
考えられる解決策の 1 つは、固定数の変数 (例: 100) を受け入れる準備済みステートメント。より少ない値で実行する場合は、残りのパラメーターを埋めるためにダミーの値が追加されます。それらがテーブルに存在しないことを確認します。ただし、このアプローチでは、100 を超える値に対して複数の呼び出しが必要です。
考えられる解決策 2: IN 句を動的に生成する
別のオプションは、次の場所で IN 句を動的に生成することです。実行時間。 implode() 関数を使用して疑問符のリストを連結すると、パラメーターの数に基づいて句を構築できます。結果の文字列は、プリペアド ステートメントの作成に使用されます。
代替解決策 1: 一時テーブル
代替解決策は、一時テーブルを作成し、各パラメータをそのテーブルに挿入することです。テーブル。その後、ターゲット テーブルをフィルタリングのために一時テーブルに対して結合できます。
代替解決策 2: 連結されたステートメント
簡潔な代替方法は、動的に生成された IN 句を直接連結することです。準備されたステートメント文字列に組み込まれ、 code.
推奨事項
最適なソリューションは、特定のコンテキストによって異なります。リストが大きい場合は、一時テーブルのアプローチの方が効率的である可能性があります。リストが小さい場合は、動的に生成される IN 句が便利なオプションです。 SQL インジェクションを防ぐには、適切なパラメーター バインディングを実装することが重要です。
以上がMySQL プリペアドステートメントで変数引数リストを処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。