Bagaimana untuk Memasukkan Berbilang Baris ke dalam Pangkalan Data Menggunakan Penyata Disediakan dalam PHP?

Linda Hamilton
Lepaskan: 2024-11-09 17:14:02
asal
657 orang telah melayarinya

How to Insert Multiple Rows into a Database Using Prepared Statements in PHP?

Sisipkan Berbilang Baris dengan Penyata Disediakan

Memasukkan berbilang baris dengan pernyataan yang disediakan ialah cara yang mudah untuk menambah data pada pangkalan data sambil mengekalkan keselamatan. Bayangkan anda mempunyai tatasusunan nilai untuk dimasukkan ke dalam jadual pangkalan data anda:

$values = [
    [
        'val1' => 'val1',
        'val2' => 'val2',
        'val3' => 'val3'
    ],
    [
        'val1' => 'another_val1',
        'val2' => 'another_val2',
        'val3' => 'another_val3'
    ],
    // and so on...
];
Salin selepas log masuk

Menggunakan Pertanyaan Sisipan Tunggal

Untuk memasukkan baris ini menggunakan pernyataan yang disediakan, kami boleh menggunakan pertanyaan INSERT dengan berbilang klausa VALUES:

INSERT INTO table (col1, col2, col3)
VALUES (
    (:val11, :val21, :val31),
    (:val12, :val22, :val32),
    (:val13, :val23, :val33)
)
Salin selepas log masuk

Untuk setiap baris, kami membuat set daripada parameter, menggantikan nilai statik dengan parameter bernama. Ini memastikan bahawa setiap parameter diikat secara berasingan.

$params = [];

foreach ($values as $row) {
    $params[':val1' . count($params)] = $row['val1'];
    $params[':val2' . count($params)] = $row['val2'];
    $params[':val3' . count($params)] = $row['val3'];
}

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

Chunking untuk Bilangan Baris yang Banyak

Jika anda mempunyai bilangan baris yang banyak untuk dimasukkan, ia lebih cekap untuk membahagikannya kepada kelompok yang lebih kecil untuk mengelakkan penggunaan memori yang berlebihan. Anda boleh menggunakan array_chunk untuk membahagikan tatasusunan nilai kepada ketulan yang lebih kecil.

$chunkSize = 100; // Adjust this to your needs
$chunks = array_chunk($values, $chunkSize);

foreach ($chunks as $chunk) {
    // Prepare and execute insert query for each chunk
    // ...
}
Salin selepas log masuk

Pendekatan Alternatif: INSERT One by One

Jika anda perlu memasukkan setiap baris secara individu, anda boleh menggunakan pendekatan berikut:

$stmt = DB::getInstance()->prepare(
    "INSERT INTO table (col1, col2, col3) VALUES (:val1, :val2, :val3)"
);

foreach ($values as $row) {
    $stmt->bindParam(':val1', $row['val1']);
    $stmt->bindParam(':val2', $row['val2']);
    $stmt->bindParam(':val3', $row['val3']);
    $stmt->execute();
}
Salin selepas log masuk

Kaedah ini kurang cekap tetapi mungkin diperlukan untuk set data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Berbilang Baris ke dalam Pangkalan Data Menggunakan Penyata Disediakan dalam PHP?. 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