mysqli_rollback
mysqli_rollback($db, $flags = 0, $name = null)
Verwirft alle Änderungen der laufenden Transaktion, als wären die Abfragen nie gelaufen. Sie gehört in einen catch-Block, wenn einer der Schritte scheitert. Die Funktion liefert true.
Parameter
- $db – die Verbindung.
- $flags, $name – optional.
Beispiele
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = mysqli_connect("localhost", "user", "password", "shop");
mysqli_set_charset($db, "utf8mb4");
mysqli_begin_transaction($db);
mysqli_query($db, "DELETE FROM products");
echo mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM products"))[0]; // 0
var_dump(mysqli_rollback($db)); // bool(true)
echo mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM products"))[0]; // 3
Worauf Sie achten sollten
- AUTO_INCREMENT-Werte, die während einer verworfenen Transaktion vergeben wurden, kommen nicht zurück – in der Nummerierung entsteht eine Lücke.
- Ein Rollback macht Änderungen in MyISAM-Tabellen nicht rückgängig.
Verwandte Funktionen:
mysqli_begin_transaction()
mysqli_commit()
mysqli_insert_id()