Memasukkan Berbilang Baris dengan Penyata Disediakan MySQLi
Masalah:
Anda ingin memasukkan dengan cekap berbilang baris ke dalam pangkalan data menggunakan pernyataan yang disediakan MySQLi. Pendekatan semasa anda melibatkan membina rentetan berasingan untuk setiap baris yang akan dimasukkan, yang tidak cekap. Anda mencari kaedah untuk melaksanakan satu pernyataan yang disediakan yang memasukkan berbilang baris dalam satu pelaksanaan.
Penyelesaian:
Walaupun kenyataan yang disediakan biasanya digunakan untuk operasi satu baris, terdapat teknik berbelit-belit yang membolehkan memasukkan berbilang baris dalam satu pernyataan. Diuji pada tatasusunan diindeks sampel tatasusunan diindeks ([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), kod berikut menunjukkan prosesnya:
<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // Sample indexed array of indexed arrays $rowCount = count($rows); $values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")"; $conn = new mysqli("localhost", "root", "", "myDB"); $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values"); $stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows)); $stmt->execute();</code>
Pendekatan ini membina satu pernyataan yang disediakan ("INSERT INTO test (col1, col2, col3) VALUES (...)") dan mengisi nilai pemegang tempat daripada tatasusunan $rows yang diratakan. Fungsi str_repeat digunakan untuk mentakrifkan bilangan watak pemegang tempat yang sesuai untuk parameter pengikatan.
Pendekatan Alternatif:
Jika memasukkan berbilang baris memerlukan pelaksanaan gelung, pertimbangkan untuk menggunakan pendekatan pernyataan disediakan baris tunggal:
<code class="php">foreach ($rows as $row) { $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES (?,?,?)"); $stmt->bind_param('iii', $row[0], $row[1], $row[2]); $stmt->execute(); }</code>
Sumber Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Berbilang Baris Menggunakan Penyata Disediakan MySQLi dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!