> 백엔드 개발 > PHP 튜토리얼 > PDO를 기반으로 PHP에서 트랜잭션 처리를 구현하는 방법에 대한 샘플 코드 공유

PDO를 기반으로 PHP에서 트랜잭션 처리를 구현하는 방법에 대한 샘플 코드 공유

黄舟
풀어 주다: 2023-03-14 11:14:01
원래의
1377명이 탐색했습니다.

이 글은 주로 PHP에서 PDO 기반의 트랜잭션 처리 방법을 소개하고, PDO를 사용하여 트랜잭션 작업에 관련된 PDO의 구현 기술을 예제 형식으로 분석합니다. 도움이 필요한 친구들이 참고할 수 있습니다

이 글의 예는 다음과 같습니다. PHP 처리 방법에서 PDO 기반 트랜잭션 구현. 다음과 같이 참조용으로 모든 사람과 공유하세요.

예 1:

try {} catch () {} form


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?php

$dsn = &#39;mysql:dbname=cheyun_cms;host=127.0.0.1&#39;;

$user = &#39;root&#39;;

$password = &#39;111111&#39;;

//采用预处理+事务处理执行SQL操作

//1.连接数据库

try {

  $pdo = new PDO($dsn, $user, $password);

  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

} catch (PDOException $e) {

  die("数据库连接失败".$e->getMessage());

}

//2.执行数据操作

try{

  //开启事物,此时会关闭自动提交

  $pdo->beginTransaction();

  $sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";

  $stmt = $pdo->prepare($sql);

  //传入参数

  $stmt->execute(array(null,"test4","w",11));

  $stmt->execute(array(null,"test5","w",11));

  $stmt->execute(array(null,"test3","w",11));

  //提交事物,并且 数据库连接返回到自动提交模式

  $pdo->commit();

}catch(PDOException $e){

  echo &#39;执行失败&#39;.$e->getMessage();

  //如果数据库被设置成自动提交模式,rollback 在回滚事务之后将恢复自动提交模式。

  //包括 MySQL 在内的一些数据库, 当在一个事务内有类似删除或创建数据表等 DLL 语句时,会自动导致一个隐式地提交。

  //隐式地提交将无法回滚此事务范围内的任何更改。即 DDL 语句无法回滚

  $pdo->rollback();

}

로그인 후 복사

예 2:

if...else... 양식


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<?php

$dsn = &#39;mysql:dbname=cheyun_cms;host=127.0.0.1&#39;;

$user = &#39;root&#39;;

$password = &#39;111111&#39;;

//采用预处理+事务处理执行SQL操作

//1.连接数据库

try {

  $pdo = new PDO($dsn, $user, $password);

} catch (PDOException $e) {

  die("数据库连接失败".$e->getMessage());

}

//2.执行数据操作

//开启事物

$pdo->beginTransaction();

$sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";

$stmt = $pdo->prepare($sql);

$datalist = array(

  array(null,"test9","w",11),

  array(null,"test10","w",11),

  array(null,"test11","w",11)

);

//是否提交标志位

$isCommit = true;

foreach($datalist as $data){

  $stmt->execute($data);

  if($stmt->errorCode()>0){

    //回滚

    $pdo->rollback();

    $isCommit = false;

    break;

  }

}

if($isCommit){

  //提交事物

  $pdo->commit();

}

로그인 후 복사

참고:

데이터 테이블에는 InnoDB 유형

이 필요합니다.

위 내용은 PDO를 기반으로 PHP에서 트랜잭션 처리를 구현하는 방법에 대한 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿