Rumah > Artikel > pangkalan data > Kaedah Manakah yang Lebih Cekap untuk Memasukkan Berbilang Baris ke dalam Jadual MySQL dengan PDO: Sisipan Berulang atau Sisipan Batch?
Memasukkan Berbilang Baris dengan PDO MySQL: Prestasi dan Kecekapan
Apabila memasukkan berbilang baris ke dalam jadual MySQL menggunakan PDO, terdapat beberapa pendekatan untuk pertimbangkan. Soalan ini meneroka kecekapan relatif dan keselamatan dua kaedah biasa:
Kaedah 1: Sisipan Berulang Menggunakan foreach
$stmt = $db->prepare($sql); foreach ($rows as $row) { $stmt->execute($row); }
Kaedah 2: Sisipan Batch menggunakan Penggabungjalinan
$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();
Prestasi Pertimbangan
Sisipan kelompok (Kaedah 2) secara amnya lebih pantas daripada sisipan berulang (Kaedah 1) kerana ia mengurangkan bilangan pertanyaan yang dihantar ke pangkalan data. Walau bagaimanapun, dalam kebanyakan senario praktikal, perbezaan prestasi adalah diabaikan.
Keselamatan dan Kebolehpercayaan
Kedua-dua kaedah adalah selamat dan boleh dipercayai apabila digunakan dengan betul. Untuk mengelakkan kelemahan suntikan SQL, adalah penting untuk menggunakan pernyataan yang disediakan dan pertanyaan berparameter.
Pendekatan Terbaik
Pendekatan terbaik bergantung pada keperluan khusus aplikasi anda:
Pertimbangkan kod folgenden sebagai versi Kaedah 2 yang diubah suai, menggunakan implode() untuk penyatuan nilai dan parameterisasi untuk dipertingkatkan keselamatan:
$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);
Atas ialah kandungan terperinci Kaedah Manakah yang Lebih Cekap untuk Memasukkan Berbilang Baris ke dalam Jadual MySQL dengan PDO: Sisipan Berulang atau Sisipan Batch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!