PHP 에서 mysqli 사용시 트랜잭션 예제입니다.
$__mysqli = new mysqli($__dbserver, $__dbuser, $__dbpasswd, $__dbname);
try {
$__mysqli->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
$sql = "insert test into (name) value (?)";
$stmt = $__mysqli->stmt_init();
$stmt = $__mysqli->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$__mysqli->commit();
} catch (Exception $e) {
$__mysqli->rollback();
}
$_mysqli 를 객체 형식으로 사용하면 위와 같이 $_mysqli->begin_transaction() 형식으로 사용하면 되며,
객체 형식이 아닐 경우는 mysqli_begin_transaction() 형식의 함수들을 사용하면 됩니다.
참고로 rename 등의 예전 함수들은 함수내에서 Exception 을 발생하지 않기 때문에
if (rename($src, $dest) == false) {
throw new Exception();
}
위와 같이 함수의 결과를 체크해서 Exception 을 강제로 발생시켜야 합니다.
참고 링크: http://php.net/manual/kr/mysqli.begin-transaction.php