Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Berbilang Baris ke dalam Pangkalan Data Menggunakan Penyata Disediakan dalam PHP?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-09 17:14:02721semak imbas

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...
];

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)
)

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);

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
    // ...
}

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();
}

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!

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