Sisipkan Berbilang Baris dengan Penyata Disediakan
Memasukkan berbilang baris dengan pernyataan yang disediakan ialah cara yang mudah untuk menambah data pada pangkalan data sambil mengekalkan keselamatan. Bayangkan anda mempunyai tatasusunan nilai untuk dimasukkan ke dalam jadual pangkalan data anda:
$values = [ [ 'val1' => 'val1', 'val2' => 'val2', 'val3' => 'val3' ], [ 'val1' => 'another_val1', 'val2' => 'another_val2', 'val3' => 'another_val3' ], // and so on... ];
Menggunakan Pertanyaan Sisipan Tunggal
Untuk memasukkan baris ini menggunakan pernyataan yang disediakan, kami boleh menggunakan pertanyaan INSERT dengan berbilang klausa VALUES:
INSERT INTO table (col1, col2, col3) VALUES ( (:val11, :val21, :val31), (:val12, :val22, :val32), (:val13, :val23, :val33) )
Untuk setiap baris, kami membuat set daripada parameter, menggantikan nilai statik dengan parameter bernama. Ini memastikan bahawa setiap parameter diikat secara berasingan.
$params = []; foreach ($values as $row) { $params[':val1' . count($params)] = $row['val1']; $params[':val2' . count($params)] = $row['val2']; $params[':val3' . count($params)] = $row['val3']; } $sql = "INSERT INTO table (col1, col2, col3) VALUES (" . implode(',', array_keys($params)) . ")"; $stmt = DB::getInstance()->prepare($sql); $stmt->execute($params);
Chunking untuk Bilangan Baris yang Banyak
Jika anda mempunyai bilangan baris yang banyak untuk dimasukkan, ia lebih cekap untuk membahagikannya kepada kelompok yang lebih kecil untuk mengelakkan penggunaan memori yang berlebihan. Anda boleh menggunakan array_chunk untuk membahagikan tatasusunan nilai kepada ketulan yang lebih kecil.
$chunkSize = 100; // Adjust this to your needs $chunks = array_chunk($values, $chunkSize); foreach ($chunks as $chunk) { // Prepare and execute insert query for each chunk // ... }
Pendekatan Alternatif: INSERT One by One
Jika anda perlu memasukkan setiap baris secara individu, anda boleh menggunakan pendekatan berikut:
$stmt = DB::getInstance()->prepare( "INSERT INTO table (col1, col2, col3) VALUES (:val1, :val2, :val3)" ); foreach ($values as $row) { $stmt->bindParam(':val1', $row['val1']); $stmt->bindParam(':val2', $row['val2']); $stmt->bindParam(':val3', $row['val3']); $stmt->execute(); }
Kaedah ini kurang cekap tetapi mungkin diperlukan untuk set data yang besar.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Berbilang Baris ke dalam Pangkalan Data Menggunakan Penyata Disediakan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!