>백엔드 개발 >PHP 튜토리얼 >PHP에서 MySQL 트랜잭션을 효과적으로 관리하는 방법은 무엇입니까?

PHP에서 MySQL 트랜잭션을 효과적으로 관리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 10:41:16130검색

How to Manage MySQL Transactions Effectively in PHP?

PHP MySQL 트랜잭션 예제

PHP 및 MySQL의 트랜잭션을 사용하면 일련의 쿼리를 단일 작업 단위로 그룹화할 수 있습니다. 즉, 쿼리 중 하나가 실패하면 트랜잭션으로 인한 모든 변경 사항이 롤백됩니다.

트랜잭션 사용 방법

PHP에서 트랜잭션을 사용하려면 MySQL의 경우 다음을 수행해야 합니다.

  1. mysql_query("SET AUTOCOMMIT=0")를 호출하여 트랜잭션을 시작하고 mysql_query("START TRANSACTION").
  2. 쿼리를 실행합니다.
  3. 모든 쿼리가 성공하면 mysql_query("COMMIT")를 호출하여 트랜잭션을 커밋합니다.
  4. 쿼리 중 하나라도 실패하면 다음을 호출하여 트랜잭션을 롤백합니다. mysql_query("ROLLBACK").

다음은 PHP 및 MySQL에서 트랜잭션을 사용하는 방법에 대한 간단한 예입니다.

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')");
$a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");

if ($a1 and $a2) {
    mysql_query("COMMIT");
} else {        
    mysql_query("ROLLBACK");
}

이 예에서는 $a1과 $a2가 모두 성공한 경우에만 COMMIT 문이 실행됩니다. 쿼리 중 하나라도 실패하면 ROLLBACK 문이 실행됩니다.

PDO와 트랜잭션 사용

PDO 클래스는 보다 현대적이고 객체 지향적인 작업 방식을 제공합니다. MySQL 트랜잭션. PDO에서 트랜잭션을 사용하려면 다음을 수행해야 합니다.

  1. PDO 객체를 생성하고 PDO::ATTR_ERRMODE 속성을 PDO::ERRMODE_EXCEPTION으로 설정합니다.
  2. $를 호출하여 트랜잭션을 시작합니다. pdo->beginTransaction().
  3. 실행
  4. 모든 쿼리가 성공하면 $pdo->commit()을 호출하여 트랜잭션을 커밋합니다.
  5. 쿼리 중 하나라도 실패하면 다음을 호출하여 트랜잭션을 롤백합니다. $pdo->rollback().

다음은 PDO에서 트랜잭션을 사용하는 방법의 예입니다.

try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO rarara (l_id) VALUES('1')");
    $pdo->exec("INSERT INTO rarara (l_id) VALUES('2')");

    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollback();
    throw $e;
}

이 예에서는 두 쿼리가 모두 성공한 경우에만 commit() 메서드가 호출됩니다. 쿼리 중 하나라도 실패하면 Rollback() 메서드가 호출되고 예외가 발생합니다.

위 내용은 PHP에서 MySQL 트랜잭션을 효과적으로 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.