In theorie klinkt het misschien alsof een enkele instructie efficiënter is omdat je niet meerdere aanroepen naar de MySQL-server hoeft te doen, maar de realiteit is dat dit een micro-optimalisatie is en je je code te ingewikkeld maakt voor nauwelijks enig voordeel.
Het leuke van voorbereide statements is dat het één keer wordt voorbereid en meerdere keren kan worden uitgevoerd. Dit bespaart u al het meerdere keren ontleden van de SQL-instructie. Bereid eenvoudig een instructie buiten een lus voor en voer deze vervolgens binnen een lus uit.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
Als je het hele ding in een transactie verpakt, zoals Your Common Sense in de opmerkingen suggereerde, is er geen merkbaar verschil in prestaties in vergelijking met één grote verklaring.
$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();