라이브러리

[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)
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 193 페이지

검색

게시물 검색