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

트랜잭션은 데이터베이스를 운영하는데 있어서 매우 중요한 기능입니다. 하나 또는 일련의 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으로 문의하세요.
PHP Fatal error: Call to undefined method PDO::prepare() in的解决方法PHP Fatal error: Call to undefined method PDO::prepare() in的解决方法Jun 22, 2023 pm 06:40 PM

PHP作为一种流行的Web开发语言,已经被使用了很长时间。PHP中集成的PDO(PHP数据对象)类是我们在开发Web应用程序过程中与数据库进行交互的一种常用方法。但是,一些PHP开发者经常遇到的问题是,当使用PDO类与数据库进行交互时,他们会收到这样的错误:PHPFatalerror:CalltoundefinedmethodPDO::prep

php如何使用PHP的PDO_PGSQL扩展?php如何使用PHP的PDO_PGSQL扩展?Jun 02, 2023 pm 06:10 PM

PHP作为一种流行的编程语言,在Web开发领域中有着广泛的应用。其中,PHP的PDO_PGSQL扩展是一种常用的PHP扩展,它提供了与PostgreSQL数据库的交互接口,可以实现PHP与PostgreSQL之间的数据传输和交互。本文将详细介绍如何使用PHP的PDO_PGSQL扩展。一、什么是PDO_PGSQL扩展?PDO_PGSQL是PHP的一个扩展库,它

PHP和PDO: 如何执行批量插入和更新PHP和PDO: 如何执行批量插入和更新Jul 28, 2023 pm 07:41 PM

PHP和PDO:如何执行批量插入和更新导言:在使用PHP编写数据库相关的应用程序时,经常会遇到需要批量插入和更新数据的情况。传统的做法是使用循环来执行多次数据库操作,但这样的方法效率较低。PHP的PDO(PHPDataObject)提供了一种更高效的方法来执行批量插入和更新操作,本文将介绍如何使用PDO来实现批量插入和更新。一、PDO简介:PDO是PH

如何使用PDO连接到Redis数据库如何使用PDO连接到Redis数据库Jul 28, 2023 pm 04:29 PM

如何使用PDO连接到Redis数据库Redis是一个开源的高性能、内存存储的键值数据库,常用于缓存、队列等场景。在PHP开发中,使用Redis可以有效提升应用的性能和稳定性。而通过PDO(PHPDataObjects)扩展,我们可以更方便地连接和操作Redis数据库。本文将介绍如何使用PDO连接到Redis数据库,并附带代码示例。安装Redis扩展在开始

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

如何使用PDO绑定和获取绑定参数值如何使用PDO绑定和获取绑定参数值Jul 28, 2023 pm 07:09 PM

如何使用PDO绑定和获取绑定参数值在开发Web应用程序时,处理数据库查询是很常见的任务之一。为了保证应用程序的安全性和可靠性,我们应该使用参数绑定来处理SQL查询,而不是直接将变量值插入SQL语句中。PDO(PHP数据对象)提供了一种方便且安全的方式来绑定参数和获取绑定参数的值。下面,我们将介绍如何使用PDO进行参数绑定和获取绑定参数的

使用PDO进行数据库操作:PHP的一个更好的方式使用PDO进行数据库操作:PHP的一个更好的方式Jun 21, 2023 pm 01:36 PM

使用PDO进行数据库操作:PHP的一个更好的方式在Web开发中,使用数据库进行数据存储、管理和查询是非常常见的。而PHP作为一种广泛应用于Web开发的语言,自然也提供了丰富的数据库操作方式。在PHP中,可以使用MySQLi、PDO以及其他扩展库来进行数据库操作。其中,PDO是一种非常常用的数据库操作方式,相比于其他方式有更多的优点。本文将介绍什么是PDO,以

PHP和PDO: 如何执行复杂的SQL查询语句PHP和PDO: 如何执行复杂的SQL查询语句Jul 28, 2023 pm 03:43 PM

PHP和PDO:如何执行复杂的SQL查询语句在处理数据库操作时,PHP提供了一种强大的扩展库PDO(PHPDataObjects),用于简化与数据库的交互。PDO支持多种数据库,比如MySQL、SQLite等,同时也提供了丰富的功能和方法,方便开发人员进行各种数据库操作。本文将介绍如何使用PDO执行复杂的SQL查询语句,并附上相应的代码示例。连接数据库

See all articles

핫 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를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전