Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tốt nhất để chèn nhiều hàng trong PHP PDO MYSQL là gì?

Bạn có ít nhất hai tùy chọn sau:

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

Như bạn có thể thấy phiên bản đầu tiên có mã đơn giản hơn rất nhiều; tuy nhiên, phiên bản thứ hai thực hiện chèn hàng loạt. Chèn hàng loạt sẽ nhanh hơn, nhưng tôi đồng ý với @BillKarwin rằng sự khác biệt về hiệu suất sẽ không được nhận thấy trong phần lớn các triển khai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm RTRIM () trong MySQL

  2. Khóa ngoại Sequelize.js

  3. PDO Nhiều truy vấn:giao dịch cam kết và khôi phục

  4. Jquery datepicker với Ajax không hoạt động

  5. Cách tạo blog trong cơ sở dữ liệu PHP và MySQL - Backend