ホームページ >バックエンド開発 >PHPチュートリアル >準備されたステートメントを使用して MySQLi で複数行の挿入を効果的に実行するにはどうすればよいですか?
一括データ挿入を処理する場合、複数の行を含む単一のクエリを構築する方が、複数の個別のクエリを実行するより効率的です。ただし、複数行の挿入にプリペアド ステートメントを使用するには、少し異なるアプローチが必要です。
複数行を含むステートメントの作成
プリペアド ステートメントを使用して複数の行を挿入するには、次のようにします。文字列連結メソッドを活用します:
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; $rowCount = count($rows); $values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")"; $stmt = $mysqli->prepare("INSERT INTO table (col1, col2, col3) VALUES $values");</code>
ここで、$values 変数は、(?, ?, ?)、(?, ?, ?)、の形式の行値を含むクエリの部分を作成します。 ....
バインドと実行
ステートメントが準備されると、値をバインドしてステートメントを実行できます。ただし、bind_param はすべてのパラメーターが単一の配列として渡されることを想定しているため、array_merge(...$rows) メソッドを使用して複数の行をフラット化し、アンパックする必要があることに注意してください。
<code class="php">$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
このアプローチにより、次のことが可能になります。データベースへの 1 回のアクセスで複数の行の挿入を実行し、一括データ挿入操作の効率を高めます。
以上が準備されたステートメントを使用して MySQLi で複数行の挿入を効果的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。