PHP で MySQL のプリペアド ステートメントを構築する場合、IN 句のパラメータの数が異なる状況に遭遇することがあります。この状況を動的に処理するには、次のアプローチを検討してください:
一時テーブルを作成します: 各パラメーターを一時テーブルに挿入し、クエリ内のテーブルを結合します。
ダイナミックスプライシング方法:
array_fill
と implode
を使用してプレースホルダーを含む IN 句を作成します。 sprintf
を使用して、動的 IN 句を含むステートメントを準備します。 次の例は、ダイナミック スプライシング方法を示しています。
<code class="language-php">$dbh = new PDO($dbConnect, $dbUser, $dbPass); $parms = array(12, 45, 65, 33); $parmcount = count($parms); $inclause = implode(',', array_fill(0, $parmcount, '?')); $sql = 'SELECT age, name FROM people WHERE id IN (%s)'; $preparesql = sprintf($sql, $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);</code>
これらのメソッドは、準備されたステートメントの安全性とパフォーマンスの利点を維持しながら、可変サイズの IN 句を処理する効率的な方法を提供します。
以上がPHP で MySQL プリペアドステートメントの可変サイズのリストを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。