English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundanleitung

PHP Fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

Verwendung und Beispiel der Funktion PHP mysqli_rollback()

PHP MySQLi Referenzhandbuch

Die Funktion mysqli_rollback() kehrt die aktuelle Transaktion zurück

Definition und Verwendung

MySQL-Datenbanken haben die Funktion der automatischen Transaktionsabgabe, wenn Sie sie aktivieren, werden die Änderungen, die Sie in der Datenbank vornehmen, automatisch gespeichert; wenn Sie sie deaktivieren, müssen Sie die Funktion mysqli_commit() ausdrücklich aufrufen, um die Änderungen zu speichern.

mysqli_rollback();Die Funktion rollt die aktuelle Transaktion zurück zum letzten Speicherpunkt (oder zum angegebenen Speicherpunkt).

Syntax

mysqli_rollback($con, [$flags, $name]);

Parameter

NummerParameter und Erklärung
1

con (notwendig)

Dies ist ein Objekt, das die Verbindung zum MySQL-Server darstellt.

2

flags (optional)

kann einer der folgenden Konstanten sein:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name (optional)

Dies ist ein Name-Wert, der als ROLLBACK /* name */ ausführt.

Rückgabewert

Der Rücksetzungsbefehl mysqli_rollback() gibt einen Boolean-Wert zurück, dertrue,sonstfalse.

PHP-Version

Diese Funktion wurde ursprünglich in der PHP-Version5in PHP 5.3.0 eingeführt und ist in allen höheren Versionen verfügbar.

Online-Beispiel

Nachfolgender Beispiel zeigt:mysqli_rollback();Verwendung des Funktionen (prozeduraler Stil)-

<?php
   //Verbindung herstellen
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //Automatische Abgabe auf false setzen
   mysqli_autocommit($con, False);
   mysqli_query($con, "CREATE TABLE IF NOT EXISTS my_team(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))");
   //Fügen Sie den Eintrag in die Tabelle my_team ein
   mysqli_query($con, "insert into my_team values(1,'Shikhar', 'Dhawan', 'Delhi', 'India')");
   mysqli_query($con, "insert into my_team values(2,'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
   mysqli_query($con, "insert into my_team values(3,'Kumara', 'Sangakkara', 'Matale', 'Srilanka')");
   mysqli_query($con, "insert into my_team values(4,'Virat', 'Kohli', 'Delhi', 'India')");
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("Zeilen (bei COMMIT): ".mysqli_affected_rows($con)."\n");
   //Änderungen speichern
   mysqli_commit($con);
   //Tabelle leeren
   mysqli_query($con, "DELETE FROM my_team where id in(3,4); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("Zeilen (vor ROLLBACK): ".mysqli_affected_rows($con)."\n");
   //Rückgängig machen
   mysqli_rollback($con);
   //Inhalt der Tabelle
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("Zeilen (nach ROLLBACK): ".mysqli_affected_rows($con));
   //Verbindung schließen
   mysqli_close($con);
?>

Ausgabeergebnis

Zeilen (bei COMMIT): 4
Zeilen (vor ROLLBACK): 2
Zeilen (nach ROLLBACK): 4

Online-Beispiel

Die Syntax für diese Methode im objektorientierten Stil ist:$con->rollback();Hier ist ein Beispiel für diese Funktion im objektorientierten Stil;

//Verbindung herstellen
$con = new mysqli("localhost", "root", "password", "mydb");
//Automatische Abgabe auf false setzen
$con->autocommit(FALSE);
//Eine Zeile in der Tabelle players einfügen
$con->query("CREATE TABLE IF NOT EXISTS players(First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))");
$con->query("insert into players values('Shikhar', 'Dhawan', 'India')");
$con->query("insert into players values('Jonathan', 'Trott', 'SouthAfrica')");
//Ergebnisse speichern
$con->commit();
$con->query("insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query("insert into players values('Virat', 'Kohli', 'India')");
//Rückgängig machen
$con-> rollback();
$res = $con-> query("SELECT * FROM players);
print_r($res);
//Verbindung schließen
$res = $con -> close();
?>

Ausgabeergebnis

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 3
    [lengths] =>
    [num_rows] => 2
    [type] => 0
)

Online-Beispiel

Automatische Übertragung ausschalten, einige Abfragen durchführen, die Abfragen übertragen und dann die aktuelle Transaktion zurückrollen:

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "MySQL-Verbindung fehlgeschlagen: " . mysqli_connect_error();
   }
   mysqli_autocommit($connection, FALSE); 
   
   mysqli_query($connection, "create table test(Name VARCHAR(255), Alter INT);   
   mysqli_query($connection, "INSERT INTO test VALUES ('Sharukh', 25);
   mysqli_commit($connection);
   
   mysqli_query($connection, "INSERT INTO test VALUES ('Kalyan', 30);
   
   mysqli_rollback($connection);
   mysqli_close($connection);
?>

执行以上程序后,如果验证表test的内容,则可以看到插入的记录为-

mysql> select * from test;
+---------+------+
| Name       | Alter |
+---------+------+
| Sharukh |   25 |
+---------+------+
1 row in set (0.00 sec)

PHP MySQLi Referenzhandbuch