Rumah > Artikel > pangkalan data > Bagaimanakah saya boleh memasukkan berbilang baris dengan cekap ke dalam pangkalan data menggunakan pernyataan yang disediakan oleh PDO?
Memasukkan Berbilang Baris dengan Cekap dengan Penyata Disediakan PDO
Daripada melaksanakan berbilang penyata sisipan dengan parameter berasingan, PDO membenarkan pemasukan berbilang baris menggunakan satu pertanyaan. Pendekatan ini meningkatkan prestasi dan keselamatan dengan menghalang keperluan untuk menyediakan dan melaksanakan penyataan beberapa kali.
Sebagai contoh, untuk memasukkan nilai daripada tatasusunan $values ke dalam jadual jadual:
$params = []; foreach ($values as $value) { array_push($params, $value['val1'], $value['val2'], $value['val3']); } $row_length = count($values[0]); $nb_rows = count($values); $length = $nb_rows * $row_length; $args = implode(',', array_map(function($el) { return '('.implode(',', $el).')'; }, array_chunk(array_fill(0, $length, '?'), $row_length))); $query = "INSERT INTO table VALUES " . $args; $stmt = DB::getInstance()->prepare($query); $stmt->execute($params);
Dalam penyelesaian ini, ? ruang letak dijana secara dinamik berdasarkan bilangan baris dan lajur. Parameter kemudiannya dilampirkan pada tatasusunan dan diserahkan kepada kaedah pelaksanaan sebagai tatasusunan tunggal. Ini menjamin bahawa setiap parameter dikendalikan secara berasingan, memastikan keselamatan data.
Sebagai alternatif, jika terdapat terlalu banyak baris untuk disisipkan dengan cekap menggunakan satu pertanyaan, pertimbangkan untuk melaksanakannya secara individu:
$args = array_fill(0, count($values[0]), '?'); $query = "INSERT INTO table VALUES (".implode(',', $args).")"; $stmt = $pdo->prepare($query); foreach ($values as $row) { $stmt->execute($row); }
Ini pendekatan mengekalkan faedah keselamatan menggunakan pernyataan yang disediakan sambil menampung set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan berbilang baris dengan cekap ke dalam pangkalan data menggunakan pernyataan yang disediakan oleh PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!