>  기사  >  백엔드 개발  >  php_php 스킬 하에서 pdo의 MySQL 트랜잭션 처리 사용 예

php_php 스킬 하에서 pdo의 MySQL 트랜잭션 처리 사용 예

WBOY
WBOY원래의
2016-05-16 20:27:03884검색

이 기사의 예에서는 PHP에서 pdo의 mysql 트랜잭션 처리 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

php mysql 트랜잭션 처리의 여러 단계:

1. 자동 제출 끄기 2. 거래 처리 활성화 3. 예외가 있는 경우 자동으로 예외 프롬프트 발생 및 롤백 4. 자동 제출 켜기

참고: mysql의 InnoDB 드라이버만 트랜잭션 처리를 지원합니다. 기본 MyIsAM 드라이버는 이를 지원하지 않습니다. 다음은 예제 코드입니다.

코드 복사 코드는 다음과 같습니다.
시도해 보세요{
           $pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//마지막으로 자동 제출을 끄세요
//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); //속성 메소드를 설정하여 자동 제출을 끄는 기능입니다.
           $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//예외 처리 켜기
}catch(PDOException $e){
echo "데이터베이스 연결 실패:".$e->getMessage()
나가세요;
}
/*
* 거래 처리
* *
* * Zhang San은 Li Si로부터 2,000위안짜리 컴퓨터를 구입했습니다
* * Zhang San 계좌에서 2,000위안 공제
* * Li Si 계좌에 2,000위안 추가
* * 제품 목록에서 컴퓨터 한 대 제거
* * MyIsAM InnoDB
*/
시도해 보세요{
           $pdo->beginTransaction();//거래 처리 시작                                                                               $가격=500
           $sql="update zhanghao set 가격=price-{$price} 여기서 id=1";            $affected_rows=$pdo->exec($sql)
          if(!$affected_rows)
                 throw new PDOException("Zhang San's transfer failed");//해당 오류로 인해 예외가 발생합니다.
           $sql="update zhanghao set 가격=price {$price} 여기서 id=3";           $affected_rows=$pdo->exec($sql);                                                         if(!$affected_rows)
                 새로운 PDOException 발생("Li Si로 전송 실패")
echo "거래 성공!"; $pdo->commit();//트랜잭션이 성공하면 제출
}catch(PDOException $e){
echo $e->getMessage(); $pdo->롤백()
}  
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//자동 제출, 최종적으로 자동 제출이 되지 않으면 전송이 실패됩니다
//오류 보고 모드 설정 ERRMODE_SILENT ERRMODE_WARNING
?>


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