PDO中的事务处理具体介绍

黄舟
发布: 2017-04-28 17:47:11
原创
2611人浏览过

pdo中的事务处理具体介绍

事务(transaction)是由查询和/或更新语句的序列组成。 用 begin、start transaction开始一个事务,rollback 回滚事务,commit 提交事务。 在开始一个事务后,可以有若干个 SQL 查询或更新语句,个 SQL递交执行后,还应该有判断是否正确执行的语句,以确定下一步是否回滚,若都被正确执行则最后提交事务。事务一旦回滚,数据库则保持开始事务前状态。就好象一个被编辑的文件不存盘退出,自还是保持文件原来的样子。所以,事务可被视为原子操作,事务中的 SQL,要么全部执行,要不一句都不执行。

在前两篇文章《PDO中错误处理的方法一-errorCode()方法》,《PDO中错误处理的方法二-errorInfo()方法》我们介绍了PDO中处理错误的方法,那么我们来具体介绍一下PDO中的事务处理~

在PDO 中同样可以实现事务处理的功能,其应用的方法如下:

(1) 开启事务——beginTransaction()方法。

beginTransaction()方法将关闭自动提交(autocommit)模式,直到事务提交或者回滚以后才恢复。

(2)提交事务——commit()方法

commit()方法完成事务的提交操作,成功返回true,否则返回false。

(3)事务回滚——rollBack()方法

rollBack()方法执行事务的回滚操作。

通过 prepare()和 execute()方法向数据库中添加数据,并且通过事务处理机制确保数据能够正确的添加到数据库中,具体步骤如下:

创建一个php文件,首先定义数据库连接参数,创建 try{...}catch{...}语句,在try{}语句中实例化 PDO构造函数,完成与数据库的连接,并且通过 beginTransaction()方法开启事务,然后定义INSERT 添加语句,通过$_POST[]方法获取表单中提交的数据,通过prepare()和 execute()方法向数据库中添加数据,并且通过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['username'];
$password =$_POST['password'];
if($_POST['username']!=""&&$_POST['password']!=""){
    $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 ('$name','$password')";//需要执行的sql语句
    $res=$pdo->prepare($query);//准备查询语句
    $res->execute();            //执行查询语句,并返回结果集
    if($res->errorCode()){
        echo "数据添加成功";
    }else{
        echo "数据添加失败";
    }
    $pdo->commit();            //执行事务的提交操作
}catch (PDOException $e){
    die("Error!:".$e->getMessage().'<br>');
 $pdo -> rollBack();             //执行事务的回滚
}
}
?>
登录后复制

最后输出的结果如下:

90.png

看了我们上面介绍的事务处理,小伙伴是不是觉得很简单,大家可以联系一下,巩固一下自己所学的东西,下一篇我们将继续介绍PDO中的储存过程,具体请阅读《PDO中的存储过程的详细介绍》!

以上就是PDO中的事务处理具体介绍的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号