Secara teori, mungkin terdengar seperti satu pernyataan lebih efisien karena Anda menghindari membuat beberapa panggilan ke server MySQL, tetapi kenyataannya adalah bahwa ini adalah optimasi mikro dan Anda terlalu memperumit kode Anda untuk mendapatkan keuntungan apa pun.
Hal yang keren tentang pernyataan yang disiapkan adalah bahwa itu disiapkan sekali dan dapat dieksekusi beberapa kali. Ini sudah menghemat penguraian pernyataan SQL beberapa kali. Cukup siapkan pernyataan di luar loop, lalu jalankan di dalam loop.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
Jika Anda membungkus semuanya dalam sebuah transaksi seperti yang disarankan oleh Akal Sehat Anda di komentar, maka tidak ada perbedaan kinerja yang mencolok dibandingkan dengan satu pernyataan besar.
$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();