라이브러리
[PHP] Session::startTransaction - 트랜잭션 시작
PHP에서 Transaction 사용하기
PHP의 PDO (PHP Data Objects) 확장 기능을 사용하여 데이터베이스에 대한 트랜잭션을 관리할 수 있습니다. 트랜잭션은 데이터베이스에 대한 일련의 연산을 하나의 단위로 처리하는 것을 의미합니다. 만약 어떤 연산 중에 문제가 발생하면, 트랜잭션은 취소되어 데이터베이스의 일관성을 유지할 수 있습니다.
# 트랜잭션 시작하기
트랜잭션을 시작하기 위해서는 `PDO::beginTransaction()` 메서드를 사용합니다.
#hostingforum.kr
php
// PDO 객체를 생성합니다.
$db = new PDO('mysql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
// 트랜잭션을 시작합니다.
$db->beginTransaction();
# 트랜잭션에 데이터 삽입하기
트랜잭션에 데이터를 삽입하기 위해서는 `PDO::exec()` 또는 `PDO::prepare()` 메서드를 사용합니다.
#hostingforum.kr
php
// 데이터를 삽입합니다.
$stmt = $db->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindParam(':name', 'John Doe');
$stmt->bindParam(':email', 'john@example.com');
$stmt->execute();
// 데이터를 삽입합니다.
$stmt = $db->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindParam(':name', 'Jane Doe');
$stmt->bindParam(':email', 'jane@example.com');
$stmt->execute();
# 트랜잭션 커밋하기
트랜잭션을 커밋하기 위해서는 `PDO::commit()` 메서드를 사용합니다.
#hostingforum.kr
php
// 트랜잭션을 커밋합니다.
$db->commit();
# 트랜잭션 롤백하기
트랜잭션을 롤백하기 위해서는 `PDO::rollBack()` 메서드를 사용합니다.
#hostingforum.kr
php
// 트랜잭션을 롤백합니다.
$db->rollBack();
# 예제
트랜잭션을 사용하는 예제를 살펴보겠습니다.
#hostingforum.kr
php
// PDO 객체를 생성합니다.
$db = new PDO('mysql:host=localhost;dbname=mydb', 'myuser', 'mypassword');
// 트랜잭션을 시작합니다.
$db->beginTransaction();
try {
// 데이터를 삽입합니다.
$stmt = $db->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindParam(':name', 'John Doe');
$stmt->bindParam(':email', 'john@example.com');
$stmt->execute();
// 데이터를 삽입합니다.
$stmt = $db->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->bindParam(':name', 'Jane Doe');
$stmt->bindParam(':email', 'jane@example.com');
$stmt->execute();
// 트랜잭션을 커밋합니다.
$db->commit();
echo '트랜잭션 성공!';
} catch (PDOException $e) {
// 트랜잭션을 롤백합니다.
$db->rollBack();
echo '트랜잭션 실패!';
}
// PDO 객체를 닫습니다.
$db = null;
이 예제에서는 트랜잭션을 시작하고, 데이터를 삽입한 후 트랜잭션을 커밋합니다. 만약 데이터 삽입 중에 문제가 발생하면, 트랜잭션을 롤백합니다.
참고자료
* [PDO (PHP Data Objects) Manual](https://www.php.net/manual/ko/book.pdo.php)
* [PDO::beginTransaction()](https://www.php.net/manual/ko/pdo.begintransaction.php)
* [PDO::commit()](https://www.php.net/manual/ko/pdo.commit.php)
* [PDO::rollBack()](https://www.php.net/manual/ko/pdo.rollback.php)
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.