ホームページ >データベース >mysql チュートリアル >PHP PDO MySQL に複数の行を挿入するにはどのアプローチが適していますか?

PHP PDO MySQL に複数の行を挿入するにはどのアプローチが適していますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-13 11:16:021019ブラウズ

Which Approach is Better for Inserting Multiple Rows in PHP PDO MySQL?

PHP PDO MySQL での複数行の挿入: コードの比較と最適化

次を使用して MySQL テーブルに複数の行を挿入する必要がある場合PHP PDO、開発者は 2 つの主要な問題に遭遇する可能性があります。

アプローチ 1:

$stmt = $db->prepare($sql);

foreach($rows as $row){
  $stmt->execute($row);
}

アプローチ 2:

$sql = "insert into `table_name` (col1, col2, col3) values ";
$sql .= //not sure the best way to concatenate all the values, use implode?
$db->prepare($sql)->execute();

コードのパフォーマンスと安全性:

どちらのアプローチも

アプローチ 1:

  • 長所: シンプルで実装が簡単.
  • 短所: 大規模なデータセットでは時間がかかる可能性があります行ごとに個別に実行されるため。

アプローチ 2:

  • 長所: 大規模なデータセットの場合、アプローチ 1 より高速バッチを実行するときinsert.
  • 短所: 慎重に値を連結する必要があり、SQL インジェクション攻撃のリスクが高まります (回避するにはパラメーター化されたクエリを使用します)。

オプション最適なアプローチ:

最適なアプローチはデータセットのサイズによって異なります挿入されている。小規模なデータセットの場合は、どちらの方法も適しています。速度が重要な大規模なデータセットの場合は、パラメーター化されたクエリを使用するアプローチ 2 をお勧めします。

追加の最適化:

アプローチ 2 のバッチ挿入は、クエリを実行する前のプレースホルダー:

$sqlArray = array();
foreach($rows as $row){
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';
}
$sql .= implode(',', $sqlArray);

これにより、クエリの数が大幅に削減されます。実行前にバインドする必要があるプレースホルダーを使用して、パフォーマンスを向上させます。

以上がPHP PDO MySQL に複数の行を挿入するにはどのアプローチが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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