Rumah >pangkalan data >tutorial mysql >PDO MySQL: Bagaimana untuk Memasukkan Berbilang Baris dalam Satu Pertanyaan Tanpa Ralat 'Penukaran Array ke rentetan'?

PDO MySQL: Bagaimana untuk Memasukkan Berbilang Baris dalam Satu Pertanyaan Tanpa Ralat 'Penukaran Array ke rentetan'?

Susan Sarandon
Susan Sarandonasal
2024-11-07 04:57:02707semak imbas

PDO MySQL: How to Insert Multiple Rows in One Query Without

PDO MySQL: Masukkan Berbilang Baris dalam Satu Pertanyaan

Soalan:

Dalam kelas PDO yang direka untuk berbilang sisipan, walaupun mencipta pertanyaan berparameter, ralat "Penukaran tatasusunan kepada rentetan" berlaku semasa melaksanakan pertanyaan. Bagaimanakah ralat ini boleh diselesaikan?

Jawapan:

Untuk menyelesaikan ralat ini, satu pendekatan adalah untuk mengulang melalui tatasusunan data dan mengikat nilai satu demi satu menggunakan bindValue bukannya mengikat keseluruhan tatasusunan. Ini memastikan bahawa setiap nilai diikat dengan betul pada parameter tertentu.

Berikut ialah contoh pelaksanaan pendekatan ini:

$query = "INSERT INTO $table (key1, key2, key3) VALUES ";
$qPart = array_fill(0, count($data), "(?, ?, ?)");
$query .= implode(",", $qPart);
$stmt = $this->start->prepare($query);
$i = 1;
foreach ($data as $item) { 
    $stmt->bindValue($i++, $item['key1']);
    $stmt->bindValue($i++, $item['key2']); 
    $stmt->bindValue($i++, $item['key3']);
}
$stmt->execute();

Sebagai alternatif, anda boleh menggunakan gelung foreach di dalam pernyataan sediakan untuk mengikat nilai bagi setiap baris:

$stmt = $pdo->prepare("INSERT INTO foo VALUES (1, 2, 3)");
foreach($data as $item) {
    $stmt->execute($item);
}

Pendekatan ini melaksanakan pertanyaan beberapa kali, satu untuk setiap baris. Walau bagaimanapun, ia lebih mudah untuk dilaksanakan berbanding pendekatan sebelumnya.

Atas ialah kandungan terperinci PDO MySQL: Bagaimana untuk Memasukkan Berbilang Baris dalam Satu Pertanyaan Tanpa Ralat 'Penukaran Array ke rentetan'?. 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