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='user1'"); $affected_rows2=$pdo->exec("update kfry set k_age=k_age-{$age} where k_name='user2'");//随意更改使之执行成功或失败 /* 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['k_name']." ".$v['k_age']."\n"; } ?>
위 내용은 PHP 트랜잭션 처리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!