Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Memasukkan Berbilang Baris Menggunakan Penyata Disediakan MySQLi dengan Cekap?

Bagaimana untuk Memasukkan Berbilang Baris Menggunakan Penyata Disediakan MySQLi dengan Cekap?

Susan Sarandon
Susan Sarandonasal
2024-10-20 16:35:02869semak imbas

How to Insert Multiple Rows Using MySQLi Prepared Statements Efficiently?

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:

  • [PILIH dengan bilangan nilai dinamik dalam IN()](https:/ /stackoverflow.com/questions/2216867/select-with-dynamic-number-of-values-in-in)
  • [PILIH dengan bilangan keadaan LIKE yang dinamik](https://stackoverflow.com/questions /6022078/pilih-dengan-bilangan-keadaan-dinamik)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn