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

PDO MySQL:Chèn nhiều hàng trong một truy vấn

Một cách dễ dàng để tránh những biến chứng sẽ là như thế này

$stmt = $pdo->prepare('INSERT INTO foo VALUES(:a, :b, :c)');
foreach($data as $item)
{
    $stmt->bindValue(':a', $item[0]);
    $stmt->bindValue(':b', $item[1]);
    $stmt->bindValue(':c', $item[2]);
    $stmt->execute();
}

Tuy nhiên, điều này thực hiện câu lệnh nhiều lần. Vì vậy, sẽ tốt hơn nếu chúng ta tạo một truy vấn dài đơn lẻ để thực hiện việc này.

Đây là một ví dụ về cách chúng tôi có thể làm điều này.

$query = "INSERT INTO foo (key1, key2) VALUES "; //Prequery
$qPart = array_fill(0, count($data), "(?, ?)");
$query .=  implode(",",$qPart);
$stmt = $dbh -> prepare($query); 
$i = 1;
foreach($data as $item) { //bind the values one by one
   $stmt->bindValue($i++, $item['key1']);
   $stmt->bindValue($i++, $item['key2']);
}
$stmt -> execute(); //execute



  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ẬP NHẬT nhiều bảng trong MySQL bằng LEFT JOIN

  2. Đặt giá trị cột làm tên cột trong kết quả truy vấn SQL

  3. Web2py - Di chuyển từ SQLite sang MySQL

  4. Xử lý và điều chỉnh kết nối với ProxySQL

  5. MySQL CASE hoạt động như thế nào?