Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyisipkan Berbilang Baris dengan Satu Penyata Disediakan Tunggal dalam MySQLi?

Bagaimana untuk Menyisipkan Berbilang Baris dengan Satu Penyata Disediakan Tunggal dalam MySQLi?

DDD
DDDasal
2024-10-20 16:38:02259semak imbas

How to Insert Multiple Rows with a Single Prepared Statement in MySQLi?

Memasukkan Berbilang Baris dengan Satu Penyata Disediakan Tunggal dalam MySQLi

Masalah:

Masukkan berbilang baris ke dalam pangkalan data menggunakan pernyataan yang disediakan, mengelakkan keperluan untuk pertanyaan berasingan untuk setiap baris.

Penyelesaian:

Walaupun kenyataan yang disediakan biasanya mengendalikan operasi baris tunggal, ia mungkin untuk memasukkan berbilang baris menggunakan sintaks dan metodologi pertanyaan khas.

Pendekatan:

  1. Buat rentetan nilai: Gunakan array_merge() dan implode() untuk membina rentetan nilai dalam format "(, , ), ...". Ini mewakili baris yang hendak disisipkan.
  2. Sediakan pernyataan: Sediakan pertanyaan dengan rentetan nilai sebagai klausa VALUES, sertakan dalam kurungan.
  3. Buat parameter pengikat: Tentukan bilangan baris dan sediakan parameter pengikat dengan pengulangan rentetan "i" (untuk nilai integer) didarab dengan bilangan baris didarab dengan bilangan lajur setiap baris.
  4. Ikat nilai: Gunakan ...array_merge( ...$rows) untuk membongkar nilai daripada tatasusunan berbilang dimensi dan mengikatnya pada parameter.
  5. Laksanakan pernyataan: Laksanakan pernyataan yang disediakan untuk memasukkan baris yang ditentukan dengan satu pertanyaan.

Contoh Kod:

<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
$rowCount = count($rows);
$values = "(&" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . "&)";

$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 Alternatif:

Ia juga boleh diterima untuk menggunakan pernyataan yang disediakan dengan satu baris pemegang tempat dan laksanakannya dalam gelung untuk setiap baris, yang lebih mudah tetapi berkemungkinan kurang cekap.

Atas ialah kandungan terperinci Bagaimana untuk Menyisipkan Berbilang Baris dengan Satu Penyata Disediakan Tunggal dalam MySQLi?. 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