Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh memasukkan berbilang baris data ke dalam pangkalan data menggunakan satu pernyataan yang disediakan dengan PDO?

Bagaimanakah saya boleh memasukkan berbilang baris data ke dalam pangkalan data menggunakan satu pernyataan yang disediakan dengan PDO?

Barbara Streisand
Barbara Streisandasal
2024-11-06 22:05:02809semak imbas

How can I insert multiple rows of data into a database using a single prepared statement with PDO?

Memasukkan Berbilang Baris dengan Penyata Disediakan PDO

Pemasukan berbilang baris data ke dalam pangkalan data menggunakan satu pernyataan yang disediakan adalah mungkin. Penyataan yang disediakan meningkatkan keselamatan dan kecekapan dengan menghalang serangan suntikan SQL dan mengoptimumkan pelaksanaan pertanyaan.

Pertimbangkan contoh berikut untuk memasukkan data ke dalam jadual bernama 'Jadual' dengan lajur 'col1', 'col2' dan 'col3' :

$params = array();
$params[':val1'] = "val1";
$params[':val2'] = "val2";
$params[':val3'] = "val3";
$sql = "INSERT INTO table VALUES (col1, col2, col3) VALUES (:val1,:val2,:val3)";
$stmt = DB::getInstance()->prepare($sql);
$stmt->execute($params);

Jika berbilang baris perlu disisipkan, pendekatan berikut boleh dilaksanakan:

  1. Bina Klausa VALUES: Sertai berbilang set nilai menggunakan kurungan dan koma. Sebagai contoh, nilai untuk tiga baris akan kelihatan seperti: ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi'), ('abc', 'def', 'ghi ').
  2. Jana Templat Pemegang Tempat: Isikan tatasusunan dengan ruang letak (?) untuk setiap nilai yang akan dimasukkan. Untuk tiga baris dengan tiga lajur setiap satu, ini ialah (?, ?, ?), (?, ?, ?), (?, ?, ?).
  3. Gabungkan SQL Pernyataan: Tambahkan templat pemegang tempat sebagai klausa VALUES pada pertanyaan INSERT. Pernyataan akhir ialah:

    INSERT INTO Table (col1, col2, col3) VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?)
  4. Sediakan dan Laksanakan: Sediakan pernyataan lanjutan menggunakan PDO. Laksanakan pernyataan itu, menghantar tatasusunan dengan semua nilai untuk dimasukkan dalam susunan yang sama seperti pemegang tempat.

    $rows = array(
                array('abc', 'def', 'ghi'),
                array('abc', 'def', 'ghi'),
                array('abc', 'def', 'ghi')
    );
    
    // Your code here as explained in the full response

Kelebihan pendekatan ini ialah ia menggabungkan semua nilai menjadi satu pertanyaan INSERT tunggal sambil mengekalkan faedah keselamatan dan pengoptimuman kenyataan yang disediakan.

Untuk senario yang melibatkan sejumlah besar baris, mungkin lebih cekap menggunakan gelung untuk memasukkannya satu demi satu. Ini memastikan prestasi yang lebih baik dan mengelakkan potensi masalah ingatan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memasukkan berbilang baris data ke dalam pangkalan data menggunakan satu pernyataan yang disediakan dengan PDO?. 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