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

Susan Sarandon
Lepaskan: 2024-10-20 16:35:02
asal
794 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!