Rumah > pangkalan data > tutorial mysql > Bolehkah saya Menggunakan Penyata Tunggal Disediakan untuk Memasukkan Berbilang Baris dalam PDO?

Bolehkah saya Menggunakan Penyata Tunggal Disediakan untuk Memasukkan Berbilang Baris dalam PDO?

Mary-Kate Olsen
Lepaskan: 2024-11-06 21:18:02
asal
462 orang telah melayarinya

Can I Use a Single Prepared Statement to Insert Multiple Rows in PDO?

Memasukkan Berbilang Baris Menggunakan Penyata Disediakan dalam PDO

Memasukkan data ke dalam pangkalan data dengan cekap adalah penting, terutamanya apabila berurusan dengan set data yang besar. Soalan ini meneroka kemungkinan memasukkan berbilang baris menggunakan satu pernyataan yang disediakan dalam sambungan PDO PHP, untuk mengoptimumkan proses pemasukan.

Masalahnya:

Keperluan timbul untuk masukkan berbilang baris ke dalam jadual menggunakan data dinamik daripada tatasusunan. Pendekatan biasa untuk memasukkan satu baris menggunakan PDO ditunjukkan:

$params = [
    ':val1' => 'val1',
    ':val2' => 'val2',
    ':val3' => 'val3',
];

$sql = "INSERT INTO table VALUES (col1, col2, col3) VALUES (:val1, :val2, :val3)";
$stmt = DB::getInstance()->prepare($sql);
$stmt->execute($params);
Salin selepas log masuk

Jawapannya:

Untuk memasukkan berbilang baris dengan satu pernyataan yang disediakan, adalah mungkin untuk bina satu pertanyaan INSERT yang mengandungi berbilang nilai. Parameter diluluskan secara berasingan untuk memastikan keselamatan dan fleksibiliti.

Contoh:

Diberikan pelbagai baris untuk dimasukkan:

$rows = [
    ['abc', 'def', 'ghi'],
    ['abc', 'def', 'ghi'],
    ['abc', 'def', 'ghi'],
];
Salin selepas log masuk

Yang berikut kod mencipta pertanyaan yang disediakan dengan ruang letak untuk setiap baris:

$row_length = count($rows[0]);
$nb_rows = count($rows);
$length = $nb_rows * $row_length;

$args = implode(',', array_map(
    function($el) { return '('.implode(',', $el).')'; },
    array_chunk(array_fill(0, $length, '?'), $row_length)
));

$params = array();
foreach ($rows as $row) {
    foreach ($row as $value) {
        $params[] = $value;
    }
}

$query = "INSERT INTO Table (col1, col2, col3) VALUES " . $args;
$stmt = DB::getInstance()->prepare($query);
$stmt->execute($params);
Salin selepas log masuk

Nilai setiap baris diluluskan sebagai parameter secara berasingan, mengekalkan keselamatan dan membenarkan pemasukan berbilang baris dengan cekap.

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Penyata Tunggal Disediakan untuk Memasukkan Berbilang Baris dalam PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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