Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO und Bindung mehrerer Wertesätze während des Einfügens - kürzlich

Theoretisch mag es so klingen, als wäre eine einzelne Anweisung effizienter, weil Sie mehrere Aufrufe an den MySQL-Server vermeiden, aber die Realität ist, dass dies eine Mikrooptimierung ist und Sie Ihren Code zu sehr verkomplizieren, ohne dass es einen Nutzen bringt.

Das Coole an vorbereiteten Anweisungen ist, dass sie einmal vorbereitet werden und mehrmals ausgeführt werden können. Dies erspart Ihnen bereits das mehrfache Parsen der SQL-Anweisung. Bereiten Sie einfach eine Anweisung außerhalb einer Schleife vor und führen Sie sie dann innerhalb einer Schleife aus.

$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
    $stmt->execute($name);
}

Wenn Sie das Ganze in eine Transaktion einpacken, wie Ihr gesunder Menschenverstand in den Kommentaren vorgeschlagen hat, gibt es keinen merklichen Leistungsunterschied im Vergleich zu einer großen Anweisung.

$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();