MySQL で PDO を使用して複数の行を効率的に挿入する
MySQL テーブルに複数の行を挿入するタスクに直面したとき、開発者はよく考えます。 PDO を使用するための最良のアプローチ。主なオプションは 2 つあります。行を 1 つずつ実行するか、SQL ステートメントを連結してバッチとして実行します。
オプション 1: 個別の行の実行
このアプローチSQL ステートメントの準備と行ごとの実行が含まれます。個別に:
$sql = "insert into `table_name` (col1, col2, col3) values (?, ?, ?)"; $stmt = $db->prepare($sql); foreach ($rows as $row) { $stmt->execute($row); }
オプション 2: バッチ挿入
このアプローチでは、SQL ステートメントが行の値と連結され、単一のコマンドとして実行されます。
$sql = "insert into `table_name` (col1, col2, col3) values "; $paramArray = []; $sqlArray = []; foreach ($rows as $row) { $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')'; foreach ($row as $element) { $paramArray[] = $element; } } $sql .= implode(',', $sqlArray); $stmt = $db->prepare($sql); $stmt->execute($paramArray);
パフォーマンス考慮事項
バッチ挿入アプローチは理論的には高速ですが、多くの場合、2 つのオプション間の実際のパフォーマンスの差は無視できます。ほとんどの場合、ステートメントを 1 回実行することで節約される時間は、値を連結するオーバーヘッドによって相殺されます。
セキュリティに関する考慮事項
どちらのアプローチも安全であるとみなされます。 SQL インジェクションを防ぐためにプリペアド ステートメントを使用する
推奨事項
実装の簡略化と容易さのために、一般的には個別行実行アプローチが推奨されます。ただし、パフォーマンスが重要な問題である場合は、バッチ挿入アプローチを検討できます。
追加メモ
以上がMySQL で PDO を使用して複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。