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

PHP 기초 강의

PHP 고급 강의

PHP & MySQL

PHP 참조 설명서

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

PHP MySQLi 참조 설명서

mysqli_autocommit() 함수는 현재 데이터베이스 연결의 자동 명령 트랜잭션 모드를 열거나 닫습니다

정의와 사용법

MySQL 데이터베이스는 '자동提交'이라는 기능을 가지고 있으며, 이를 열면 데이터베이스에 저장된 변경 사항이 자동으로 저장되며, 닫으면 변경 사항을 명시적으로 저장해야 합니다.mysqli_autocommit() 현재 연결의 자동 트랜잭션提交 상태를 확인하려면 SELECT @@autocommit 이라는 SQL 요청을 실행할 수 있습니다.

부울 값을 전달하면true이 함수에 전달하면 자동 트랜잭션 모드를 활성화하며, 전달하지 않으면 활성화되지 않습니다.false그렇다면 자동 트랜잭션 모드를 끄게 됩니다.

문법

mysqli_autocommit($con, $mode);

파라미터

순번파라미터 및 설명
1

con(필수)

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

2

mode(필수)

이 부울 값은 자동 트랜잭션 모드를 열어야 하는지 여부를 나타냅니다.

반환 값

PHP mysqli_autocommit() 함수는 성공 시 보이는 부울 값을 반환합니다.true실패 시false

주석과 힌트

 이 방법은 MyISAM이나 ISAM과 같이 트랜잭션 처리를 지원하지 않는 양식 조사에서는 효과가 없습니다.

PHP 버전

이 함수는 PHP 버전5PHP의 모든 더 높은 버전에서 사용할 수 있습니다.

온라인 예제

mydb 데이터베이스에서 my_team이라는 테이블을 생성한 예제를 다음과 같습니다-

CREATE TABLE my_team(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   First_Name VARCHAR(255), 
   Last_Name VARCHAR(255), 
   Place_Of_Birth VARCHAR(255), 
   Country VARCHAR(255)
);

다음 예제는 다음과 같이 보여줍니다mysqli_autocommit()함수의 사용법(과정 지향 스타일)-

<?php
   //연결 설정
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //자동提交을 false로 설정합니다
   mysqli_autocommit($con, False);
   //기록을 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')");
   //테이블 내용 검증
   $result = mysqli_query($con, "SELECT * FROM my_team");
   print_r($result);
   //연결을 닫습니다
   mysqli_close($con);
?>

결과 출력

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

이전 예제에서 자동提交 옵션을关闭한 이유로, 레코드 추가는 데이터베이스에 저장되지 않으며, MySQL에서 테이블의 내용을 확인하면 테이블이 비어 있을 것입니다. 다음과 같습니다;

mysql> select * from my_team;
Empty set (0.00 sec)

데이터베이스의 변경 사항을 저장하려면 프로그램의 마지막에 mysqli_commit() 함수를 사용하여 변경 사항을 트랜잭션으로提交해야 합니다

mysqli_commit($con);

my_team 테이블의 내용을 확인하면 추가된 레코드를 볼 수 있습니다. 다음과 같습니다-

mysql> select * from my_team;
+----+------------+------------+----------------+-------------+
| ID | First_Name | Last_Name  | Place_Of_Birth | Country     |
+----+------------+------------+----------------+-------------+
|  1 | Shikhar    | Dhawan     | Delhi          | India       |
|  2 | Jonathan   | Trott      | CapeTown        | SouthAfrica |
|  3 | Kumara     | Sangakkara | Matale          | Srilanka    |
|  4 | Virat      | Kohli      | Delhi          | India       |
+----+------------+------------+----------------+-------------+
4 셋 내 rows (0.00 초)

온라인 예제

객체 지향 스타일 방식으로 이 메서드의 문법은 다음과 같습니다 $con-> autocommit()이 함수의 객체 지향 스타일 예제는 다음과 같습니다;

//연결 설정
$con = new mysqli("localhost", "root", "password", "mydb");
//자동提交을 true로 설정합니다
$con-> autocommit(FALSE);
//기록을 my_team 테이블에 삽입합니다
$con-> query("insert into my_team values(1, 'Shikhar', 'Dhawan', 'Delhi', 'India')");
$con-> query("insert into my_team values(2, 'Jonathan', 'Trott', 'CapeTown', 'SouthAfrica')");
$con-> query("insert into my_team values(3, 'Kumara', 'Sangakkara', 'Matale', 'Srilanka')");
$con-> query("insert into my_team values(4, 'Virat', 'Kohli', 'Delhi', 'India')");
//테이블 내용 검증
$result = $con-> query("SELECT * FROM my_team");
print_r($result);
//결과 저장
$con-> commit();
//연결을 닫습니다
$con -> close();
?>

결과 출력

mysqli_result Object
(
    [current_field] => 0
    [field_count] => 5
    [lengths] =>
    [num_rows] => 4
    [type] => 0
)

온라인 예제

mysqli_autocommit() 함수는 호출 시 commit()로도 사용될 수 있으며, 쿼리 결과를 데이터베이스에 저장을 기다립니다:

//연결 설정
$con = mysqli_connect("localhost", "root", "password", "mydb");
//테이블 생성
mysqli_query($con, "Create table players (First_Name VARCHAR(255), Last_Name VARCHAR(255), Country VARCHAR(255))")
//자동提交을 false로 설정합니다
mysqli_autocommit($con, False);
//기록을 my_team 테이블에 삽입합니다
mysqli_query($con, "insert into players values('Shikhar', 'Dhawan', 'India');")
mysqli_query($con, "insert into players values('Jonathan', 'Trott', 'SouthAfrica');")
mysqli_autocommit($con, TRUE);
//연결을 닫습니다
mysqli_close($con);
?>

프로그램을 실행한 후, 만약 players 의 내용을 확인하면, 추가된 기록을 다음과 같이 관찰할 수 있습니다-

mysql> select * from players;
+------------+-----------+-------------+
| First_Name  | Last_Name       | Country    |
+------------+-----------+-------------+
| Shikhar     | Dhawan          | 인도       |
| Jonathan   | Trott           | 남아프리카 |
+------------+-----------+-------------+
2 셋 내 rows (0.00 초)

온라인 예제

<?php
   $connection = mysqli_connect("localhost", "root", "password", "mydb");
   
   if (mysqli_connect_errno($connection)){
      echo "Failed to connect to 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_query($connection, "INSERT INTO test VALUES ('Kalyan', 30)
   
   mysqli_commit($connection);
   mysqli_close($connection);
?>

위 프로그램을 실행한 후, 테이블을 확인하면test의 내용을 확인하면, 삽입된 기록이 다음과 같이 보입니다-

mysql> select * from test;
+---------+------+
| 이름        | 연령        |
+---------+------+
| Sharukh   |   25 |
| Kalyan     |   30 |
+---------+------+
2 셋 내 rows (0.00 초)

PHP MySQLi 참조 설명서