
MySQLi를 사용하여 데이터베이스 연동을 진행할 때, commit 메소드는 트랜잭션을 완료하는 역할을 합니다.
트랜잭션은 데이터베이스의 상태를 일시적으로 변경하고, 변경된 상태를 확인한 후에 완료하거나 취소할 수 있는 기능입니다.
MySQLi에서 트랜잭션을 사용하기 위해서는 mysqli_begin_transaction() 함수를 호출하여 트랜잭션을 시작해야 합니다.
이후에 insert, update, delete 쿼리를 수행한 후에 mysqli_commit() 함수를 호출하여 트랜잭션을 완료할 수 있습니다.
하지만, MySQLi에서 기본적으로 autocommit 모드를 사용하고 있기 때문에, insert, update, delete 쿼리를 수행한 후에 데이터베이스에 자동으로 반영됩니다.
따라서, mysqli_commit() 함수를 호출하지 않아도 데이터베이스에 반영되는 현상이 발생하는 것입니다.
하지만, autocommit 모드를 사용하지 않는 경우에는 mysqli_commit() 함수를 호출하지 않으면 데이터베이스에 반영되지 않습니다.
따라서, 위의 상황에서 mysqli_commit() 함수를 호출할 필요는 없습니다.
하지만, 트랜잭션을 사용하는 경우에는 mysqli_commit() 함수를 호출하여 트랜잭션을 완료하는 것이 좋습니다.
또한, autocommit 모드를 사용하지 않는 경우에는 mysqli_commit() 함수를 호출하여 데이터베이스에 반영하는 것이 좋습니다.
예제를 통해 살펴보겠습니다.
#hostingforum.kr
php
// autocommit 모드를 사용하는 경우
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->autocommit(true); // autocommit 모드를 사용
// insert 쿼리를 수행
$result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
// 데이터베이스에 자동으로 반영
#hostingforum.kr
php
// autocommit 모드를 사용하지 않는 경우
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->autocommit(false); // autocommit 모드를 사용하지 않음
// insert 쿼리를 수행
$result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
// 데이터베이스에 반영되지 않음
$mysqli->commit(); // 데이터베이스에 반영
#hostingforum.kr
php
// 트랜잭션을 사용하는 경우
$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->begin_transaction(); // 트랜잭션을 시작
// insert 쿼리를 수행
$result = $mysqli->query("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
// 데이터베이스에 반영되지 않음
$mysqli->commit(); // 데이터베이스에 반영
2025-08-01 08:40