백엔드 개발 PHP 튜토리얼 PDO에서의 트랜잭션 처리

PDO에서의 트랜잭션 처리

Jul 29, 2016 am 08:55 AM
pdo quot

트랜잭션은 데이터베이스를 운영하는데 있어서 매우 중요한 기능입니다. 하나 또는 일련의 SQL 문을 예약한 후 함께 실행하는 기능입니다. 실행 과정에서 그 중 하나가 실행에 실패하면 모두 롤백할 수 있습니다. 변경된 작업이 성공적으로 실행되면 이 일련의 작업은 영구적으로 효과적입니다. 트랜잭션을 통해 데이터베이스를 실행할 때 동기화되지 않는 문제를 해결할 수 있습니다. 많이 개선되길 바랍니다.

트랜잭션 처리 기능을 PDO에서도 구현할 수 있습니다

1: 개방형: BeginTransaction() 메소드

beginTransaction() 메소드는 자동 커밋(autocommit) 모드를 끄고 항목이 제출되거나 롤백될 때까지 재개되지 않습니다.

2: 제출 thing: commit( ) 메서드

commit() 메서드는 사물의 제출 작업을 완료하고 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

3: 사물 롤백: RollBack() 메서드

rollBack() 메서드는 사물의 롤백 작업을 수행합니다.

예:

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try {
    $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
    $pdo->beginTransaction();//开启事物
    $query = "insert into user (username,password) values('admin','123456')";//需要执行的sql语句
    $res = $pdo->prepare($query);
    if ($res->execute()) {
        echo "数据添加成功";
    }else{
        echo "数据添加失败";
    }
    $pdo->commit();//执行事物的提交操作
}catch(PDOException $e){
    die("Error!: ".$e->getMessage().'<br>');
    $pdo->rollBack();//执行事物的回滚操作
}
로그인 후 복사

보충:

데이터베이스 트랜잭션은 완전히 실행되거나 전혀 실행되지 않는 단일 논리적 작업 단위로 수행되는 일련의 작업을 의미합니다.
트랜잭션 처리는 트랜잭션 단위 내의 모든 작업이 성공적으로 완료되지 않는 한 데이터 지향 리소스가 영구적으로 업데이트되지 않도록 합니다. 관련 작업 집합을 모두 성공하거나 모두 실패하는 단위로 결합하면 오류 복구를 단순화하고 애플리케이션의 안정성을 높일 수 있습니다. 논리적 작업 단위가 트랜잭션이 되려면 소위 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 충족해야 합니다.
트랜잭션은 데이터베이스 운영의 논리적 작업 단위로, DBMS의 트랜잭션 관리 하위 시스템이 트랜잭션 처리를 담당합니다.
관련 속성:
원자성
트랜잭션은 모든 데이터 수정 사항이 실행되거나 아무것도 실행되지 않는 원자성 작업 단위여야 합니다. 일반적으로 트랜잭션과 관련된 작업에는 공통 목표가 있으며 상호 의존적입니다. 시스템이 이러한 작업의 하위 집합만 수행하는 경우 트랜잭션의 전체 목적이 무효화될 수 있습니다. 원자성은 시스템이 작업의 하위 집합을 처리할 가능성을 제거합니다.
 Consistency(일관성)
거래가 완료되면 모든 데이터는 일관성을 유지해야 합니다. 관련 데이터베이스에서는 모든 데이터의 무결성을 유지하기 위해 트랜잭션 수정에 모든 규칙을 적용해야 합니다. 트랜잭션이 끝나면 모든 내부 데이터 구조(예: B-트리 인덱스 또는 이중 연결 목록)가 정확해야 합니다. 일관성 유지에 대한 일부 책임은 응용 프로그램이 알려진 모든 무결성 제약 조건을 적용했는지 확인해야 하는 응용 프로그램 개발자에게 있습니다. 예를 들어, 자금 이체를 위한 애플리케이션을 개발할 때 이체 과정에서 소수점을 임의로 이동하는 것을 피해야 합니다.
격리(Isolation)
동시 트랜잭션에 의한 수정은 다른 동시 트랜잭션에 의한 수정과 격리되어야 합니다. 트랜잭션이 데이터를 볼 때의 데이터 상태는 다른 동시 트랜잭션에 의해 수정되기 전의 상태이거나 다른 트랜잭션이 데이터를 수정한 후의 상태입니다. 이를 격리라고 합니다. 시작 데이터를 다시 로드하고 일련의 트랜잭션을 재생하여 데이터가 원래 트랜잭션 실행과 동일한 상태가 되도록 하기 때문입니다. 가장 높은 격리 수준은 트랜잭션이 직렬화될 때 달성됩니다. 이 수준에서 병렬로 실행될 수 있는 일련의 트랜잭션에서 얻은 결과는 각 트랜잭션을 직렬로 실행하여 얻은 결과와 동일합니다. 격리 수준이 높으면 병렬로 실행될 수 있는 트랜잭션 수가 제한되므로 일부 애플리케이션은 처리량을 늘리는 대신 격리 수준을 낮춥니다.
내구성(Duration)
거래가 완료된 후 시스템에 미치는 영향은 영구적입니다. 이 수정 사항은 치명적인 시스템 오류가 발생하는 경우에도 유지됩니다.


위 내용은 내용의 측면을 포함하여 PDO에서의 트랜잭션 처리를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 메소드 PDO::prepare() 호출 PHP 치명적인 오류에 대한 해결 방법: 정의되지 않은 메소드 PDO::prepare() 호출 Jun 22, 2023 pm 06:40 PM

PHP는 오랫동안 사용되어 온 인기 있는 웹 개발 언어입니다. PHP에 통합된 PDO(PHP 데이터 개체) 클래스는 웹 애플리케이션 개발 중에 데이터베이스와 상호 작용하는 일반적인 방법입니다. 그러나 일부 PHP 개발자가 자주 직면하는 문제는 PDO 클래스를 사용하여 데이터베이스와 상호 작용할 때 다음과 같은 오류가 발생한다는 것입니다. PHPFatalerror:CalltoundefinemethodPDO::prep

PHP의 PDO_PGSQL 확장을 사용하는 방법은 무엇입니까? PHP의 PDO_PGSQL 확장을 사용하는 방법은 무엇입니까? Jun 02, 2023 pm 06:10 PM

널리 사용되는 프로그래밍 언어인 PHP는 웹 개발 분야에서 널리 사용됩니다. 그 중 PHP의 PDO_PGSQL 확장은 일반적으로 사용되는 PHP 확장으로 PostgreSQL 데이터베이스와의 대화형 인터페이스를 제공하며 PHP와 PostgreSQL 간의 데이터 전송 및 상호 작용을 실현할 수 있습니다. 이 기사에서는 PHP의 PDO_PGSQL 확장 기능을 사용하는 방법을 자세히 소개합니다. 1. PDO_PGSQL 확장이란 무엇입니까? PDO_PGSQL은 PHP의 확장 라이브러리입니다.

PHP 및 PDO: 대량 삽입 및 업데이트를 수행하는 방법 PHP 및 PDO: 대량 삽입 및 업데이트를 수행하는 방법 Jul 28, 2023 pm 07:41 PM

PHP 및 PDO: 일괄 삽입 및 업데이트를 수행하는 방법 소개: PHP를 사용하여 데이터베이스 관련 애플리케이션을 작성할 때 데이터를 일괄 삽입하고 업데이트해야 하는 상황에 자주 직면하게 됩니다. 전통적인 접근 방식은 루프를 사용하여 여러 데이터베이스 작업을 수행하는 것이지만 이 방법은 비효율적입니다. PHP의 PDO(PHPDataObject)는 일괄 삽입 및 업데이트 작업을 수행하는 보다 효율적인 방법을 제공합니다. 이 기사에서는 PDO를 사용하여 일괄 삽입 및 업데이트 작업을 구현하는 방법을 소개합니다. 1. PDO 소개: PDO는 PH입니다.

PHP 및 PDO: 데이터베이스에서 JSON 데이터를 처리하는 방법 PHP 및 PDO: 데이터베이스에서 JSON 데이터를 처리하는 방법 Jul 29, 2023 pm 05:17 PM

PHP 및 PDO: 데이터베이스에서 JSON 데이터를 처리하는 방법 현대 웹 개발에서 대량의 데이터를 처리하고 저장하는 것은 매우 중요한 작업입니다. 모바일 애플리케이션과 클라우드 컴퓨팅의 인기로 인해 점점 더 많은 데이터가 JSON(JavaScript Object Notation) 형식으로 데이터베이스에 저장됩니다. 일반적으로 사용되는 서버측 언어인 PHP의 PDO(PHPDataObject) 확장은 데이터베이스를 처리하고 운영하는 편리한 방법을 제공합니다. 책

PHP 및 PDO: 페이징 쿼리를 수행하고 데이터를 표시하는 방법 PHP 및 PDO: 페이징 쿼리를 수행하고 데이터를 표시하는 방법 Jul 29, 2023 pm 04:10 PM

PHP 및 PDO: 페이지에서 데이터를 쿼리하고 표시하는 방법 웹 애플리케이션을 개발할 때 페이지에서 데이터를 쿼리하고 표시하는 것은 매우 일반적인 요구 사항입니다. 페이징을 통해 한 번에 일정량의 데이터를 표시할 수 있어 페이지 로딩 속도와 사용자 경험이 향상됩니다. PHP에서는 PDO(PHP Data Object) 라이브러리를 사용하여 페이징 쿼리 및 데이터 표시 기능을 쉽게 구현할 수 있습니다. 이 기사에서는 PHP에서 PDO를 사용하여 페이지별로 데이터를 쿼리하고 표시하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 데이터베이스 및 데이터 테이블 생성

PHP 및 PDO: 데이터베이스 백업 및 복원 작업을 수행하는 방법 PHP 및 PDO: 데이터베이스 백업 및 복원 작업을 수행하는 방법 Jul 29, 2023 pm 06:54 PM

PHP 및 PDO: 데이터베이스 백업 및 복원 작업을 수행하는 방법 웹 애플리케이션을 개발할 때 데이터베이스 백업 및 복원은 매우 중요한 작업입니다. 널리 사용되는 서버 측 스크립팅 언어인 PHP는 풍부한 라이브러리와 확장 기능을 제공하며, 그 중 PDO(PHP 데이터 개체)는 강력한 데이터베이스 액세스 추상화 계층입니다. 이 기사에서는 PHP와 PDO를 사용하여 데이터베이스 백업 및 복원 작업을 수행하는 방법을 소개합니다. 1단계: 데이터베이스에 연결 실제 작업을 수행하기 전에 데이터베이스에 대한 연결을 설정해야 합니다. PDO 쌍 사용

PDO를 사용하여 Redis 데이터베이스에 연결하는 방법 PDO를 사용하여 Redis 데이터베이스에 연결하는 방법 Jul 28, 2023 pm 04:29 PM

PDO를 사용하여 Redis 데이터베이스에 연결하는 방법 Redis는 캐시, 대기열 및 기타 시나리오에서 일반적으로 사용되는 고성능 오픈 소스 인메모리 스토리지 키-값 데이터베이스입니다. PHP 개발에서 Redis를 사용하면 애플리케이션의 성능과 안정성을 효과적으로 향상시킬 수 있습니다. PDO(PHPDataObjects) 확장을 통해 Redis 데이터베이스를 보다 편리하게 연결하고 운영할 수 있습니다. 이 문서에서는 코드 예제와 함께 PDO를 사용하여 Redis 데이터베이스에 연결하는 방법을 설명합니다. 처음에 Redis 확장을 설치하십시오.

PHP PDO 대 mysqli: 비교 및 ​​대조 PHP PDO 대 mysqli: 비교 및 ​​대조 Feb 19, 2024 pm 12:24 PM

PDOPDO는 PHP용 통합 인터페이스를 제공하는 객체 지향 데이터베이스 액세스 추상화 계층으로, 동일한 코드를 사용하여 다양한 데이터베이스(예: Mysql, postgresql, oracle)와 상호 작용할 수 있습니다. PDO는 기본 데이터베이스 연결의 복잡성을 숨기고 데이터베이스 작업을 단순화합니다. 장점과 단점 장점: 통합 인터페이스, 다중 데이터베이스 지원, 데이터베이스 작업 단순화, 개발 어려움 감소, 준비된 명령문 제공, 보안 향상, 트랜잭션 처리 지원 단점: 성능이 기본 확장보다 약간 낮을 수 있고, 외부 라이브러리에 의존하며, 오버헤드가 증가할 수 있습니다. 데모 코드는 PDO를 사용하여 mysql 데이터베이스에 연결합니다: $db=newPDO("mysql:host=localhost;dbnam

See all articles