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

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Uso e esempio della funzione mysqli_rollback() in PHP

PHP MySQLi Manuale di Referenza

La funzione mysqli_rollback() annulla la transazione corrente

Definizione e uso

Il database MySQL ha la funzione di commit automatico delle transazioni. Se lo abiliti, le modifiche apportate al database saranno salvate automaticamente; se lo disabiliti, dovrai salvare esplicitamente le modifiche utilizzando la funzione mysqli_commit().

mysqli_rollback();La funzione sposta la transazione corrente all'ultimo punto di salvataggio (o al punto di salvataggio specificato).

Sintassi

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

Parametro

Numero di sequenzaParametri e descrizione
1

con(obbligatorio)

Questo è un oggetto che rappresenta la connessione con il server MySQL.

2

flags(opzionale)

Può essere uno dei seguenti costanti:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name (optional)

This is a name value, which, when specified, will be executed as ROLLBACK /* name */.

Return value

The mysqli_rollback() function returns a boolean value, which istrue,otherwisefalse.

PHP version

This function was initially introduced in PHP version 5 and is available in all higher versions.

Esempio online

The following example demonstratesmysqli_rollback();Usage of the function (procedural style)-

<?php
   //stabilisce la connessione
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //imposta l'autocommit su false
   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))");
   //Insert the record into the my_team table
   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("Line number (at submission time): \n".mysqli_affected_rows($con)."\n");
   //salva le modifiche
   mysqli_commit($con);
   //tronca la tabella
   mysqli_query($con, "DELETE FROM my_team where id in(3,4)"); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("righe (prima del rollback): ".mysqli_affected_rows($con)."\n");
   //Rimettere indietro
   mysqli_rollback($con);
   //contenuto della tabella
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("righe (dopo il rollback): ".mysqli_affected_rows($con));
   //Chiudere la connessione
   mysqli_close($con);
?>

Risultato di output

righe (al momento del commit): 4
righe (prima del rollback): 2
righe (dopo il rollback): 4

Esempio online

La sintassi di questo metodo in stile orientato agli oggetti è:$con->rollback();Ecco un esempio di questa funzione in stile orientato agli oggetti;

//stabilisce la connessione
$con = new mysqli("localhost", "root", "password", "mydb");
//imposta l'autocommit su false
$con->autocommit(FALSE);
//inserisce un record nella tabella players
$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')");
//salva il risultato
$con->commit();
$con->query("insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query("insert into players values('Virat', 'Kohli', 'India')");
//Rimettere indietro
$con->rollback();
$res = $con->query("SELECT * FROM players");
print_r($res);
//Chiudere la connessione
$res = $con -> close();
?>

Risultato di output

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

Esempio online

Disabilitare l'autocommit, eseguire alcune query, commit le query e poi annullare la transazione corrente:

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "Connesso MySQL fallito: " . mysqli_connect_error();
   }
   mysqli_autocommit($connection, FALSE); 
   
   mysqli_query($connection, "create table test(Name VARCHAR(255), Age 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);
?>

Eseguendo il programma sopra, se si verifica la tabellatestcontenuto, allora è possibile vedere che il record inserito è -

mysql> select * from test;
+---------+------+
| Nome     | Età  |
+---------+------+
| Sharukh | 25   |
+---------+------+
1 riga nel set (0.00 sec)

PHP MySQLi Manuale di Referenza