블로그

[PHP] mysqli 트랜잭션 예제

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

2016-11-09 목록