>백엔드 개발 >PHP 튜토리얼 >PHP로 데이터베이스 트랜잭션을 작성하는 방법

PHP로 데이터베이스 트랜잭션을 작성하는 방법

WBOY
WBOY원래의
2023-05-16 08:45:211517검색

PHP는 단순성, 학습 용이성, 유연성 및 빠른 속도로 인해 널리 사용되는 웹 개발 언어입니다. 웹 개발에서 데이터베이스는 없어서는 안 될 구성 요소 중 하나입니다. 데이터베이스의 무결성과 일관성을 보장하기 위해 개발자는 트랜잭션을 사용하여 데이터베이스 작업을 제어할 수 있습니다. 이 기사에서는 PHP를 사용하여 데이터베이스 트랜잭션을 작성하는 방법을 소개합니다.

1. 데이터베이스 트랜잭션이란 무엇입니까?

데이터베이스 트랜잭션은 별도의 논리적 작업 단위로 처리될 수 있고 다음 네 가지 특성(ACID)을 충족할 수 있는 데이터베이스 작업 집합을 의미합니다.

  1. 원자성: 트랜잭션은 분할할 수 없습니다. 모든 운영 단위는 완료되거나 롤백되어야 합니다. .
  2. 일관성: 트랜잭션 실행 전후에 데이터베이스 상태가 일관되게 유지되어야 합니다.
  3. 격리: 트랜잭션 실행 중 수정 사항은 다른 트랜잭션에 표시되지 않습니다.
  4. 내구성: 트랜잭션이 성공적으로 실행된 후 데이터베이스 수정 사항을 영구적으로 저장해야 하며 시스템이 실패하더라도 손실되지 않습니다.

2. PHP는 데이터베이스 트랜잭션을 어떻게 구현하나요?

PHP를 사용하여 데이터베이스 트랜잭션을 구현하려면 MySQLi, PDO 등과 같은 데이터베이스 작업 확장을 사용해야 합니다. 다음은 MySQLi를 예로 들어 데이터베이스 트랜잭션을 구현하는 방법을 소개합니다.

  1. 트랜잭션 시작

데이터베이스 작업에 MySQLi를 사용하기 전에 먼저 MySQL 연결을 만들어야 합니다. 연결이 생성된 후 mysqli_begin_transaction() 함수를 사용하여 새 트랜잭션을 시작할 수 있습니다. 샘플 코드는 다음과 같습니다.

$mysqli = new mysqli("localhost", "username", "password", "database");
$mysqli->begin_transaction();
  1. 작업 수행

트랜잭션을 시작한 후 데이터 삽입, 업데이트, 삭제 등의 데이터베이스 작업을 수행할 수 있습니다. 샘플 코드는 다음과 같습니다.

$mysqli->query("INSERT INTO `user` (`name`, `age`, `sex`) VALUES ('张三', 20, 1)");
$mysqli->query("UPDATE `user` SET `age` = 21 WHERE `name` = '张三'");
$mysqli->query("DELETE FROM `user` WHERE `name` = '李四'");
  1. 트랜잭션 커밋 또는 롤백

트랜잭션 작업이 완료된 후 mysqli_commit() 함수를 사용하여 트랜잭션을 커밋하고 모든 작업을 데이터베이스에 적용할 수 있습니다. 오류가 발생하거나 작업을 롤백하려는 경우 mysqli_rollback() 함수를 사용하여 트랜잭션 롤백을 구현할 수 있습니다. 샘플 코드는 다음과 같습니다.

try {
    $mysqli->commit();
    echo "操作成功";
} catch (Exception $e) {
    $mysqli_rollback();
    echo "操作失败";
}

위 코드에서 모든 작업이 성공적으로 수행되면 트랜잭션이 커밋되고 "작업 성공"이 출력되고, 그렇지 않으면 트랜잭션이 롤백되고 "작업 실패"가 출력됩니다.

3. 사용상의 주의사항

  1. 모든 데이터베이스 작업은 트랜잭션 시작부터 커밋 또는 롤백 사이에 수행되어야 합니다.
  2. 트랜잭션 실행 중에 오류가 발생하면 데이터베이스에 돌이킬 수 없는 손상을 방지하기 위해 트랜잭션을 적시에 롤백해야 합니다.
  3. Prepared 문을 사용할 수 있는 경우 SQL 삽입 위험을 피하기 위해 준비된 문을 사용하세요.
  4. 각 데이터베이스 연결은 동시에 하나의 트랜잭션만 수행할 수 있으며 여러 트랜잭션에는 여러 연결이 필요합니다.
  5. 데이터베이스 트랜잭션을 사용할 때 InnoDB는 트랜잭션을 지원하지만 MyISAM은 트랜잭션을 지원하지 않기 때문에 모든 테이블이 InnoDB 스토리지 엔진을 사용하는지 확인해야 합니다.

IV. 요약

PHP를 사용하여 데이터베이스 트랜잭션을 구현하면 데이터베이스 작업의 일관성과 무결성을 효과적으로 보장하고 데이터베이스에 대한 부정적인 영향을 피할 수 있습니다. 개발자는 특정 비즈니스 요구에 따라 트랜잭션 작업을 합리적으로 사용하여 애플리케이션 개발 효율성과 안정성을 향상시킬 수 있습니다.

위 내용은 PHP로 데이터베이스 트랜잭션을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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