Heim > Artikel > Backend-Entwicklung > So löschen Sie eine Transaktion in PHP
So löschen Sie PHP-Transaktionen: 1. Verwenden Sie die Methode „autocommit(false)“, um die automatische Übermittlung der Datenbank zu deaktivieren. 2. Wenn alle Operationsanweisungen erfolgreich sind, senden Sie sie über „commit()“ an die Datenbank Der Vorgang schlägt fehl. Verwenden Sie die Methode „rollback()“, um das Löschen rückgängig zu machen.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.
Wie lösche ich eine PHP-Transaktion?
php-Transaktionsverarbeitungstransaktion
MySQL-Transaktionen werden hauptsächlich zur Verarbeitung von Daten mit großen Vorgängen und hoher Komplexität verwendet. Wenn Sie beispielsweise im Personalverwaltungssystem eine Person löschen, müssen Sie die grundlegenden Informationen der Person sowie die mit der Person verbundenen Informationen wie Postfächer, Artikel usw. löschen. Auf diese Weise werden diese Datenbanken gelöscht Operationsanweisungen stellen eine Transaktion dar!
In MySQL unterstützen nur Datenbanken oder Tabellen, die die Innodb-Datenbank-Engine verwenden, Transaktionen.
Transaktionsverarbeitung kann verwendet werden, um die Integrität der Datenbank aufrechtzuerhalten und sicherzustellen, dass Stapel von SQL-Anweisungen entweder alle oder gar nicht ausgeführt werden.
Transaktionen werden verwendet. Einfügungs-, Aktualisierungs- und Löschanweisungen verwalten.
Im Allgemeinen müssen Transaktionen 4 Bedingungen (ACID) erfüllen: Atomarität (Atomizität), Konsistenz (Stabilität), Isolation (Isolation), Haltbarkeit (Persistenz)
1 Atomarität von Transaktionen: Eine Reihe von Transaktionen ist entweder erfolgreich oder wird zurückgezogen.
2. Stabilität: Bei illegalen Daten (Fremdschlüsselbeschränkungen und dergleichen) wird die Transaktion zurückgezogen.
3. Isolation: Transaktionen laufen unabhängig ab. Wenn sich das Ergebnis einer Transaktion auf andere Transaktionen auswirkt, werden die anderen Transaktionen zurückgezogen. Eine 100-prozentige Isolierung von Transaktionen erfordert Einbußen bei der Geschwindigkeit.
4. Haltbarkeit: Sobald eine Transaktion festgeschrieben ist, sind ihre Änderungen an den Daten in der Datenbank dauerhaft. Selbst wenn die Datenbank ausfällt, sollte dies keine Auswirkungen darauf haben.
Führen Sie das folgende Programm aus
$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo'); if($mysqli->connect_error){ die('数据库连接错误'.$mysqli->connect_error); } $sql1 = "update account set balance = balance - 2 where id = 1"; //这里故意写错指令中的balance1属性 $sql2 = "update account set balance1 = balance + 2 where id = 2"; $result1 = $mysqli->query($sql1); $result2 = $mysqli->query($sql2); if(!$result1 || !$result2){ die('操作错误'.$mysqli->error); }else{ die('操作成功'); } $mysqli->close();
Obwohl der obige Code einen Fehler meldet, wurde der Kontostand mit der ID=1 geändert.
Wir möchten gleichzeitig ändern, wenn Es liegt ein Fehler vor. Es wird sich derzeit nicht ändern. Wir benötigen eine „Transaktionskontrolle“, um die „Konsistenz“ sicherzustellen.
Die Methode, die wir verwenden müssen, ist autocommit() commit().
$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo'); if($mysqli->connect_error){ die('数据库连接错误'.$mysqli->connect_error); } //关闭数据库自动提交 $mysqli->autocommit(false); $sql1 = "update account set balance = balance - 2 where id = 1"; //这里故意写错属性balance1 $sql2 = "update account set balance1 = balance + 2 where id = 2"; $result1 = $mysqli->query($sql1); $result2 = $mysqli->query($sql2); if(!$result1 || !$result2){ die('操作错误'.$mysqli->error); $mysqli->rollback(); //事务回退 }else{ //操作全部正确后再提交 $mysqli->commit(); } $mysqli->close();Verwenden Sie zuerst die Methode autocommit(false), deaktivieren Sie die automatische Datenbankübermittlung und senden Sie dann commit() an die Datenbank. Wenn der Vorgang fehlschlägt, verwenden wir zum Rollback die Methode rollback() zurück. Empfohlenes Lernen: „
PHP-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonSo löschen Sie eine Transaktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!