PDO MySQL を使用した複数の行の挿入: パフォーマンスと効率
PDO を使用して MySQL テーブルに複数の行を挿入する場合、いくつかの方法があります。考慮する。この質問では、2 つの一般的なメソッドの相対的な効率と安全性を調査します。
メソッド 1: foreach を使用した反復挿入
$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? $stmt = $db->prepare($sql)->execute();
パフォーマンスに関する考慮事項
バッチ挿入 (方法 2) は、数が削減されるため、一般に反復挿入 (方法 1) より高速です。データベースに送信されたクエリの数。ただし、ほとんどの実際的なシナリオでは、パフォーマンスの違いは無視できます。
安全性と信頼性
どちらの方法も、正しく使用すれば安全で信頼性が高くなります。 SQL インジェクションの脆弱性を防ぐには、プリペアド ステートメントとパラメータ化されたクエリを使用することが重要です。
最良のアプローチ
最良のアプローチは、アプリケーションの特定の要件によって異なります。
folgenden コードを方法 2 の修正バージョンとして考慮し、値の連結とパラメーター化に implode() を使用して改善します。安全性:
$sql = "insert into `table_name` (col1, col2, col3) values "; $paramArray = array(); $sqlArray = array(); 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);
以上がPDO を使用して MySQL テーブルに複数の行を挿入するには、反復挿入とバッチ挿入のどちらの方法がより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。