19.7 PDO中事务处理
在PDO中同样可以实现事务处理的功能,其应用的方法如下:
开启事务——beginTransaction方法
beginTransaction方法将关闭自动提交(autocommit)模式,直到事务提交或者回滚以后才恢复。
提交事务——commit方法
commit方法完成事务的提交操作,成功则返回true,否则返回false。
事务回滚——rollback方法
rollback方法执行事务的回滚操作。
通过prepare和execute方法向数据库中添加数据,并且通过事务处理机制确保数据能够正确地添加到数据中。
【例19.9】创建index.php文件。首先,定义数据库连接的参数,创建try{…}catch{…}语句,在try{…}语句中实例化PDO构造函数,完成与数据库的连接,并且通过beginTransaction方法开启事务。然后,定义insert添加语句,通过$_POST[]方法获取表单中提交的数据,通过prepare和execute方法向数据库中添加数据,并且通过commit方法完成事务的提交操作。最后,在catch{…}语句中返回错误信息,并且通过rollBack执行事务的回滚操作。其代码如下:(实例位置:光盘TMsl199)
<?php if($_POST['Submit']=="提交" && $_POST['pdo']! =""){ $dbms='mysql'; //数据库类型,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数 $host='localhost'; //数据库主机名 $dbName='db_database19'; //使用的数据库 $user='root'; //数据库连接用户名 $pass='111'; //对应的密码 $dsn="$dbms:host=$host; dbname=$dbName"; try { $pdo=new PDO($dsn, $user, $pass); //初始化一个PDO对象,就是创建了数据库连接对象$pdo $pdo->beginTransaction(); //开启事务 $query="insert into tb_pdo_mysql(pdo_type, database_name, dates)values ('".$_POST['pdo']."', '".$_POST['databases']."', '".$_POST['dates']."')"; $result=$pdo->prepare($query); if($result->execute()){ echo "数据添加成功!"; }else{ echo "数据添加失败!"; } $pdo->commit(); //执行事务的提交操作 } catch (PDOException $e) { die ("Error! : " . $e->getMessage() . "<br/>"); $pdo->rollBack(); //执行事务的回滚 } } ?>
运行结果如图19.11所示。
图19.11 数据添加中应用事务处理机制
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。