Teoreticky by to mohlo znít, že jeden příkaz je efektivnější, protože se vyhnete vícenásobnému volání na server MySQL, ale realita je taková, že se jedná o mikrooptimalizaci a zbytečně komplikujete svůj kód, abyste měli sotva nějaký užitek.
Skvělé na připravených příkazech je to, že jsou připraveny jednou a lze je provést vícekrát. To vám již ušetří vícenásobnou analýzu příkazu SQL. Jednoduše připravte příkaz mimo smyčku a poté jej proveďte uvnitř smyčky.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
Pokud to celé zabalíte do transakce, jak navrhuje Váš selský rozum v komentářích, není zde žádný znatelný rozdíl ve výkonu ve srovnání s jedním velkým prohlášením.
$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();