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

Tutoriais básicos PHP

Tutoriais avançados PHP

PHP & MySQL

Manual de referência PHP

Uso e exemplo da função PHP mysqli_rollback()

PHP MySQLi Guia de Referência

A função mysqli_rollback() rejeita a transação atual

Definição e uso

O banco de dados MySQL possui a função de submissão automática de transações, se você ativar, as alterações feitas no banco de dados serão salvas automaticamente; se desativar, será necessário usar a função mysqli_commit() para salvar explicitamente as alterações.

A seguir, um exemplo demonstra函数将当前事务滚动到最后一个保存点(或指定的保存点)。

语法

A função rolla a transação atual para o último ponto de salvamento (ou para o ponto de salvamento especificado).

Sintaxe

mysqli_rollback($con, [$flags, $name]);Parâmetro
1

Número

Parâmetros e descrições

2

con (obrigatório)

Este é um objeto que representa a conexão com o servidor MySQL.

  • flags (opcional)

  • Pode ser um dos seguintes constantes:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

3

MYSQLI_TRANS_COR_RELEASE

MYSQLI_TRANS_COR_NO_RELEASE /* name (opcional) */ Esta é uma chave de valor, quando especificada, será usada como ROLLBACK

name

Execução.Retorno do valormysqli_rollback() retorna um valor booleano, true se a operação for bem-sucedida.Caso contrário, true,false

.

Versão do PHP5Inicialmente, esta função foi introduzida no PHP versão

Exemplo Online

introduzido e disponível em todas as versões mais recentes.A seguir, um exemplo demonstramysqli_rollback();-

<?php
   //estabelecer conexão
   Uso da função (estilo procedimental)
   //definir o commit automático como falso
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   Desativar o auto-commit do mysqli255), Last_Name VARCHAR(255Criar a tabela my_team se ela não existir (ID INT, Primeiro_Nome VARCHAR(255), Country VARCHAR(255))");
   //, Local_de_Nascimento VARCHAR(
   , 'Kumara', 'Sangakkara', 'Matale', 'Sri Lanka')");1Inserir registros na tabela my_team
   , 'Kumara', 'Sangakkara', 'Matale', 'Sri Lanka')");2, 'Shikhar', 'Dhawan', 'Delhi', 'India')");
   , 'Kumara', 'Sangakkara', 'Matale', 'Sri Lanka')");3, 'Jonathan', 'Trott', 'Cape Town', 'South Africa')");
   , 'Kumara', 'Sangakkara', 'Matale', 'Sri Lanka')");4, 'Virat', 'Kohli', 'Delhi', 'India')");
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("número de linhas (ao commit): ".mysqli_affected_rows($con)."\n");
   //salvar alterações
   mysqli_commit($con);
   //truncar tabela
   mysqli_query($con, "DELETE FROM my_team where id in(3,4); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("número de linhas (antes do rollback): ".mysqli_affected_rows($con)."\n");
   //Reverter
   mysqli_rollback($con);
   //conteúdo da tabela
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("número de linhas (após rollback): ".mysqli_affected_rows($con));
   //Fechar Conexão
   mysqli_close($con);
?>

Resultados de Saída

número de linhas (ao commit): 4
número de linhas (antes do rollback): 2
número de linhas (após rollback): 4

Exemplo Online

A sintaxe dessa método no estilo orientado a objetos é$con->rollback();Aqui está um exemplo dessa função no estilo orientado a objetos;

//estabelecer conexão
$con = new mysqli("localhost", "root", "password", "mydb");
//definir o commit automático como falso
$con->autocommit(FALSE);
//inserir um registro na tabela 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')");
//salvar resultado
$con->commit();
$con->query("insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query("insert into players values('Virat', 'Kohli', 'India')");
//Reverter
$con-> rollback();
$res = $con-> query("SELECT * FROM players);
print_r($res);
//Fechar Conexão
$res = $con -> close();
?>

Resultados de Saída

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

Exemplo Online

Desativar o commit automático, fazer algumas consultas, submeter consultas e depois reverter a transação atual:

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "Conexão MySQL falhou: " . 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);
?>

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

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

PHP MySQLi Guia de Referência