php中pdo事务处理的实现过程,PDO中的事务处理具体介绍

PDO中的事务处理具体介绍

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

在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()方法执行事务的回滚操作,具体代码如下:

用户名:

密码:

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().'
');

$pdo -> rollBack(); //执行事务的回滚

}

}

?>

最后输出的结果如下:

0c3ac6fb8109b5f59ca526911da9ad70.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值