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

Verwenden von PHP zum Ausführen mehrerer MYSQL-Abfragen

Führen Sie nicht mehrere Abfragen gleichzeitig aus. Normalerweise hängt der Erfolg einer Operation davon ab, dass alle anderen Operationen korrekt durchgeführt wurden. Sie können also nicht einfach so weiterfahren, als ob nichts schief gelaufen wäre, wenn es ein Problem gibt.

So geht's:

$queries = [
  "CREATE TEMPORARY TABLE tmp SELECT * FROM event_categoriesBU WHERE id = 1",
  "UPDATE tmp SET id=100 WHERE id = 1",
  "INSERT INTO event_categoriesBU SELECT * FROM tmp WHERE id = 100"
];

foreach ($query as $query) {
  $stmt = $conn->prepare($query);
  $stmt->execute();
}

Vergessen Sie nicht, Ausnahmen zu aktivieren damit alle Abfragefehler Ihren Prozess stoppen, anstatt dass das Ding außer Kontrolle gerät.

Der Grund, warum Sie nicht Verwenden Sie multi_query liegt daran, dass diese Funktion keine Platzhalterwerte unterstützt. Sollten Sie Benutzerdaten irgendeiner Art in diese Abfrage einführen müssen, müssen Sie bind_param verwenden um es sicher zu tun. Ohne Platzhalterwerte sind Sie SQL-Injection-Bugs ausgesetzt, und ein einziger davon reicht aus, um Ihre gesamte Anwendung angreifbar zu machen.

Es ist erwähnenswert, dass PDO viel flexibler und anpassungsfähiger ist als mysqli wenn Sie also nicht zu sehr in mysqli investiert sind , lohnt es sich, über einen Wechsel nachzudenken.