이 기사의 예에서는 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 프로그래밍 설계에 도움이 되기를 바랍니다.