>  기사  >  백엔드 개발  >  PDO의 트랜잭션 처리에 대한 자세한 소개

PDO의 트랜잭션 처리에 대한 자세한 소개

黄舟
黄舟원래의
2017-04-28 17:47:112389검색

PDO의 트랜잭션 처리에 대한 자세한 소개

트랜잭션은 일련의 쿼리 및/또는 업데이트 문으로 구성됩니다. 트랜잭션을 시작하려면 시작 및 시작 트랜잭션을 사용하고, 트랜잭션을 롤백하려면 롤백을 사용하고, 트랜잭션을 커밋하려면 커밋을 사용하세요. 트랜잭션이 시작된 후 여러 개의 SQL 쿼리나 업데이트 문이 있을 수 있으며, 각 SQL이 실행을 위해 제출된 후에는 모두 실행될 경우 다음 단계에서 롤백할지 여부를 결정하기 위해 올바르게 실행되었는지 확인하는 문도 있어야 합니다. 올바르게 트랜잭션이 최종적으로 커밋됩니다. 트랜잭션이 롤백되면 데이터베이스는 트랜잭션이 시작되기 전의 상태로 유지됩니다. 편집한 파일을 저장하지 않고 종료해도 파일의 원래 모습은 그대로 유지되는 것과 같습니다. 따라서 트랜잭션은 원자성 작업으로 간주될 수 있으며 트랜잭션의 SQL은 완전히 실행되거나 전혀 실행되지 않습니다.

처음 두 기사에서 "PDO의 오류 처리 방법 1 - errorCode() 메서드 ", "PDO의 오류 처리 방법 2 - errorInfo() 메서드 》PDO에서 오류를 처리하는 방법을 소개한 후, PDO에서의 트랜잭션 처리에 대해 자세히 소개하겠습니다~

트랜잭션 처리 기능은 PDO에서도 구현할 수 있으며, 그 적용 방법은 다음과 같습니다. :

(1) 트랜잭션을 시작합니다—beginTransaction() 메서드.

beginTransaction() 메서드는 트랜잭션이 커밋되거나 롤백될 때까지 자동 커밋 모드를 끕니다.

(2) Commit transaction - commit() 메소드

commit() 메소드는 트랜잭션 제출 작업을 완료하고 true를 성공적으로 반환하고, 그렇지 않으면 false를 반환합니다.

(3) 트랜잭션 롤백 - RollBack() 메소드

rollBack() 메소드는 트랜잭션의 롤백 작업을 수행합니다.

Prepare() 및 Execute() 메소드를 통해 데이터베이스에 데이터를 추가하고, 트랜잭션 처리 메커니즘을 통해 데이터가 데이터베이스에 올바르게 추가될 수 있는지 확인합니다.

php 파일을 생성하고, 먼저 데이터베이스 연결 매개변수를 정의하고, try{...}catch{...} 문을 생성하고, try{} 문에서 PDO 생성자를 인스턴스화하고, 데이터베이스와의 연결을 완료하고, BeginTransaction() 메소드를 통해 트랜잭션을 시작한 후 INSERT 문을 정의하고 $_POST[] 메소드를 통해 폼에 제출된 데이터를 가져온 다음 prepare() 및 Execution() 메소드를 통해 데이터베이스에 데이터를 추가하고 완료합니다. commit(0 메소드를 통해 트랜잭션 제출 작업을 수행하고 최종적으로 catch{} 문에 오류 메시지가 반환되며, RollBack() 메소드를 통해 트랜잭션의 롤백 작업이 수행됩니다. 구체적인 코드는 다음과 같습니다.

<form action="3.php" name="form1" method="post">
    用户名:<input type="text" name="username">
    密码:  <input type="password" name="password">
    <input type="submit" name="Submit" value="提交">
</form>
<?php
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$name =$_POST[&#39;username&#39;];
$password =$_POST[&#39;password&#39;];
if($_POST[&#39;username&#39;]!=""&&$_POST[&#39;password&#39;]!=""){
    $dbms = "mysql";                                  // 数据库的类型
    $dbName ="php_cn";                                //使用的数据库名称
    $user = "root";                                   //使用的数据库用户名
    $pwd = "root";                                    //使用的数据库密码
    $host = "localhost";                              //使用的主机名称
    $dsn  = "$dbms:host=$host;dbname=$dbName";
try{
    $pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
    $pdo -> beginTransaction();   //开始事务
    $query="insert into `user`(username,password) VALUES (&#39;$name&#39;,&#39;$password&#39;)";//需要执行的sql语句
    $res=$pdo->prepare($query);//准备查询语句
    $res->execute();            //执行查询语句,并返回结果集
    if($res->errorCode()){
        echo "数据添加成功";
    }else{
        echo "数据添加失败";
    }
    $pdo->commit();            //执行事务的提交操作
}catch (PDOException $e){
    die("Error!:".$e->getMessage().&#39;<br>&#39;);
 $pdo -> rollBack();             //执行事务的回滚
}
}
?>

최종 출력 결과는 다음과 같습니다.

PDO의 트랜잭션 처리에 대한 자세한 소개

위에 소개한 트랜잭션 처리를 읽어보니 매우 간단하다고 생각되시나요? 다음 글에서는 계속해서 PDO의 저장 프로세스를 소개하겠습니다. 자세한 내용은 "PDO의 저장 프로시저에 대한 자세한 소개"를 읽어보세요!

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

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