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