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

PHP 기본 강의

PHP 고급 강의

PHP & MySQL

PHP 참조 설명서

PHP mysqli_rollback() 함수 사용법 및 예제

PHP MySQLi 참조 가이드

mysqli_rollback() 함수는 현재 트랜잭션을 되돌립니다

정의와 사용법

MySQL 데이터베이스는 자동으로 트랜잭션을提交하는 기능을 가지고 있으며, 그를 활성화하면 데이터베이스에서 수행한 변경이 자동으로 저장됩니다; 그를 비활성화하면 mysqli_commit() 함수를 사용하여 명시적으로 변경을 저장해야 합니다.

mysqli_rollback();이 함수는 현재 트랜잭션을 마지막으로 저장된 포인트(또는 지정된 포인트)로 롤백합니다.

문법

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

매개변수

순번매개변수 및 설명
1

con(필수)

이는 MySQL Server와의 연결을 나타내는 객체입니다.

2

flags(선택)

다음 중 하나의 상수 중 하나일 수 있습니다:

  • MYSQLI_TRANS_COR_AND_CHAIN

  • MYSQLI_TRANS_COR_AND_NO_CHAIN

  • MYSQLI_TRANS_COR_RELEASE

  • MYSQLI_TRANS_COR_NO_RELEASE

3

name(선택)

이는 이름 값이며, 지정되면 ROLLBACK으로 사용됩니다. /* name */ 실행.

반환 값

mysqli_rollback() 함수는 성공적으로 작동하면 부울 값을 반환합니다.true,그렇지 않으면false에서 초기화되었습니다.

PHP 버전

이 함수는 원래 PHP 버전5중에서 도입되었으며, 모든 더 높은 버전에서 사용할 수 있습니다.

온라인 예제

아래 예제에서는mysqli_rollback();함수의 사용법(과정 지향 스타일)-

<?php
   //연결 설정
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //자동提交을 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))");
   //기록을 my_team 테이블에 삽입합니다
   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("행수(提交时): ".mysqli_affected_rows($con)."\n");
   //변경을 저장
   mysqli_commit($con);
   //테이블을 초기화
   mysqli_query($con, "DELETE FROM my_team where id in(3,4); 
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("행수(롤백 전): ".mysqli_affected_rows($con)."\n");
   //뒤로 돌아갑니다
   mysqli_rollback($con);
   //테이블의 내용
   $res = mysqli_query($con, "SELECT * FROM my_team");
   print("행수(롤백 후): ".mysqli_affected_rows($con));
   //연결을 닫습니다
   mysqli_close($con);
?>

출력 결과

행수(提交时): 4
행수(롤백 전): 2
행수(롤백 후): 4

온라인 예제

面向对象风格的此方法的语法为$con->rollback();面向对象风格的此函数的示例;

//연결 설정
$con = new mysqli("localhost", "root", "password", "mydb");
//자동提交을 false로 설정
$con->autocommit(FALSE);
//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')");
//저장 결과
$con->commit();
$con->query("insert into players values('Kumara', 'Sangakkara', 'Srilanka')");
$con->query("insert into players values('Virat', 'Kohli', 'India')");
//뒤로 돌아갑니다
$con-> rollback();
$res = $con-> query("SELECT * FROM players");
print_r($res);
//연결을 닫습니다
$res = $con -> close();
?>

출력 결과

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

온라인 예제

자동提交을 끊고 몇 가지 쿼리를 수행한 후, 현재 트랜잭션을 롤백합니다:

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "MySQL 연결 실패: " . 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;
+---------+------+
| Name        | Age     |
+---------+------+
| Sharukh |   25 |
+---------+------+
1 row in set (0.00 sec)

PHP MySQLi 참조 가이드