
PDO::inTransaction 메소드는 현재 트랜잭션 내에 있는지 확인하는 역할을 합니다. 하지만 이 메소드는 트랜잭션을 시작하기 전에 호출하더라도 항상 false를 반환하는 현상을 해결하기 위해서는 다음과 같은 방법이 있습니다.
1. PDO::inTransaction 메소드는 트랜잭션을 시작한 후에만 true를 반환합니다. 따라서 트랜잭션을 시작하기 전에 호출하는 것은 의미가 없습니다.
2. PDO::inTransaction 메소드는 트랜잭션의 시작과 종료를 PDO 자체에서 관리하지 않습니다. 따라서 PDO::inTransaction 메소드를 사용하여 트랜잭션을 시작하고 종료하는 것은 불가능합니다.
트랜잭션을 시작하고 종료하는 방법은 다음과 같습니다.
1. PDO::beginTransaction 메소드를 사용하여 트랜잭션을 시작합니다.
2. 트랜잭션 내에서 데이터베이스 작업을 수행합니다.
3. PDO::commit 메소드를 사용하여 트랜잭션을 종료합니다.
예제:
#hostingforum.kr
php
$db = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
$db->beginTransaction();
try {
// 트랜잭션 내에서 데이터베이스 작업을 수행합니다.
$stmt = $db->prepare('INSERT INTO mytable (name, age) VALUES (:name, :age)');
$stmt->execute(['name' => 'John', 'age' => 30]);
$stmt = $db->prepare('INSERT INTO mytable (name, age) VALUES (:name, :age)');
$stmt->execute(['name' => 'Jane', 'age' => 25]);
$db->commit();
} catch (PDOException $e) {
$db->rollBack();
}
위 예제는 PDO::beginTransaction 메소드를 사용하여 트랜잭션을 시작하고, PDO::commit 메소드를 사용하여 트랜잭션을 종료합니다. 만약 예외가 발생하면 PDO::rollBack 메소드를 사용하여 트랜잭션을 취소합니다.
2025-05-15 03:09