Về lý thuyết, nghe có vẻ như một câu lệnh đơn lẻ sẽ hiệu quả hơn vì bạn tránh thực hiện nhiều lệnh gọi đến máy chủ MySQL, nhưng thực tế là đây là một tối ưu hóa vi mô và bạn đang phức tạp hóa mã của mình hầu như không mang lại lợi ích gì.
Điều thú vị về các câu lệnh chuẩn bị là nó được chuẩn bị một lần và có thể được thực hiện nhiều lần. Điều này đã giúp bạn phân tích cú pháp câu lệnh SQL nhiều lần. Chỉ cần chuẩn bị một câu lệnh bên ngoài vòng lặp và sau đó thực thi nó bên trong một vòng lặp.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
Nếu bạn gói gọn toàn bộ mọi thứ trong một giao dịch như Your Common Sense đã đề xuất trong các nhận xét thì không có sự khác biệt đáng chú ý về hiệu suất so với một tuyên bố lớn.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO people (firstName, lastName) VALUES(?,?)');
$pdo->beginTransaction();
foreach ($names as $name) {
$stmt->execute($name);
}
$pdo->commit();