ホームページ >バックエンド開発 >PHPチュートリアル >準備されたステートメントを使用して MySQLi で複数行の挿入を効果的に実行するにはどうすればよいですか?

準備されたステートメントを使用して MySQLi で複数行の挿入を効果的に実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 16:35:29601ブラウズ

How to Perform Multiple Row Insertion Effectively in MySQLi Using Prepared Statements?

プリペアド ステートメントを使用した 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。