>  기사  >  백엔드 개발  >  PHP 트랜잭션 처리에 대한 자세한 설명

PHP 트랜잭션 처리에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-07-12 16:29:034576검색

MySQL 트랜잭션은 주로 대규모 작업과 복잡성이 높은 데이터를 처리하는 데 사용됩니다. 예를 들어 인사관리 시스템에서 사람을 삭제하면 그 사람의 기본 정보뿐만 아니라 편지함, 글 등 그 사람과 관련된 정보도 삭제해야 합니다. 이런 식으로요. , 이러한 데이터베이스 운영문은 거래를 구성합니다!

1. PHP 트랜잭션 처리 개요:

트랜잭션: 은 여러 이벤트
의 모음입니다. 모든 이벤트가 성공적으로 실행되면 이벤트가 성공적으로 실행되지 않으면 트랜잭션이 실행됩니다. , 거래 다른 이벤트도 실행되지 않습니다.

MySQL 버전이 BDB 또는 InnoDB 테이블 유형을 지원하는 한 MySQL에는 트랜잭션 처리 기능이 있습니다. 그 중 InnoDB 테이블 유형이 가장 많이 사용됩니다. 나중에 Oracle이 InnoDB를 인수하는 등 MySQL을 불행하게 만드는 일이 발생했지만 이러한 비즈니스 이벤트는 기술과 관련이 없습니다. InnoDB 테이블 유형을 사용하는 MySQL에 대해 간단히 이야기하겠습니다. 예를 들어 거래 처리.

2. PHP 트랜잭션 처리 코드:

<?php
 try{
 $pdo=new PDO("mysql:host=localhost;dbname=psp","root","");
 $pdo->exec("set names utf8");
 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置异常处理模式
 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交
 }catch(PDOException $e){
 echo "数据库连接失败";
 exit;
 }

 try{
 $age=10;
 $pdo->beginTransaction();//开始事务
 $affected_rows1=$pdo->exec("update kfry set k_age=k_age+{$age} where k_name=&#39;user1&#39;");
 $affected_rows2=$pdo->exec("update kfry set k_age=k_age-{$age} where k_name=&#39;user2&#39;");//随意更改使之执行成功或失败
 /* if($affected_rows1&&$affected_rows2)
 {
  $pdo->commit();
  echo "操作成功";
 }else{
  $pdo->rollback();
 } */
 if(!$affected_rows1)
  throw new PDOException("加入错误");
 if(!$affected_rows2)
  throw new PDOException("减少错误");
 echo "操作成功";
 $pdo->commit();//如果执行到此处前面两个更新sql语句执行成功,整个事务执行成功
 }catch(PDOException $e){
 echo "操作失败:".$e->getMessage();
 $pdo->rollback();//执行事务中的语句出了问题,整个事务全部撤销
 }
 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
 //测试是否成功
 echo "\n操作结果为:\n";
 $sql="select * from kfry";
 $result=$pdo->query($sql);
 foreach($result as $v)
 {
 echo $v[&#39;k_name&#39;]." ".$v[&#39;k_age&#39;]."\n";
 }
?>

위 내용은 PHP 트랜잭션 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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