Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa cara terbaik untuk menyisipkan banyak baris di PHP PDO MYSQL?

Anda memiliki setidaknya dua opsi ini:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values (?,?,?)";

$stmt = $db->prepare($sql);

foreach($rows as $row)
{
    $stmt->execute($row);
}

OR:

$rows = [(1,2,3), (4,5,6), (7,8,9) ... ];

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();

$sqlArray = array();

foreach($rows as $row)
{
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';

    foreach($row as $element)
    {
        $paramArray[] = $element;
    }
}

// $sqlArray will look like: ["(?,?,?)", "(?,?,?)", ... ]

// Your $paramArray will basically be a flattened version of $rows.

$sql .= implode(',', $sqlArray);

$stmt = $db->prepare($sql);

$stmt->execute($paramArray);

Seperti yang Anda lihat, versi pertama menampilkan kode yang jauh lebih sederhana; namun versi kedua menjalankan insert batch. Penyisipan batch harus lebih cepat, tetapi saya setuju dengan @BillKarwin bahwa perbedaan kinerja tidak akan terlihat di sebagian besar implementasi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Dapatkan nomor baris di pilih

  2. Cara Mengimpor dan Mengekspor File CSV Menggunakan PHP dan MySQL

  3. Memantau Kinerja MySQL dengan ClusterControl

  4. Pelanggaran Kendala saat mempertahankan hubungan One To Many

  5. Enkripsi Kata Sandi di Java atau MySQL?