PDO类基本应用二

思考:在MySql中,有一种事务功能,能够帮助实现哪些需要多个步骤操作,然后一次性完成的,那么PDO中是如何实现的呢?

引入:其实,事务操作本质上是一种SQL操作,也就是说利用前面所说的写操作(事务都是写操作),就可以实现,而在PDO中,当然也提供

了一定的封装来实现这个功能,从而避免了一些简单的固定SQL执行的操作

PDO事务功能【了解】

定义:PDO事务功能,并非PDO额外多出了一项功能,而是将原来MySql所支持的事务操作进行了一定的封装实现。注意:事务执行是否成功是由MySql对应的存储引擎是否支持决定的

1.事务功能回顾:事务是指改变默认的一次操作一次写入数据表的机制,而是通过事务日志记录操作,在最后通过一次性操作写入到数据表。事务过程如下

  • 开始事务:start transaction,写操作停止直接写入数据表,而是记录事务日志
  • 事务操作:具体的写操作,通常多个步骤多条指令
  • 提交事务:即事务操作结束
  1. 成功提交:commit,所有事务日志内容同步到数据表,并清空当前事务日志
  2. 失败提交 rollback ,直接清空当前事务日志

2.PDO类中提供一套方案来实现事务操作

  • PDO::beginTransction()开启事务
  • PDO::exec()执行事务-----写操作
  • PDO::rollBack()回滚所有事务
  • PDO::commit()成功提交事务
<?php


//实例化PDO函数 封装
function PDO_ini($dsn){

    $obj=@new PDO($dsn,'root','root');
    if(!$obj){
        exit('数据库连接失败');
        }else{
            return $obj;
        }
}






$dsn='mysql:host=localhost;port=3306;dbname=senven;charset=utf8';
$obj=PDO_ini($dsn);

//开启事务
$obj->beginTransction() or die("事务开启失败");

//执行事务
$obj->exec('insert into hylist (hyid,hyname,hysex,hyphone) values ('','','','','')');
//省略下面步骤,使用事务必须是多条指令,一条没由意义

//终止事务

$obj->commit();         //成功提交事务
$obj->rollBack();      //失败回滚



?>

3.在事务中,由一种回滚点机制,在PDO中没有实现,如果有必要,可以通过SQL指令设置实现

//我们在MySql中操作事务的时候,可以通过下面代码设置会给你点

start transction;
#回滚点
savepoint sp1;

rollback to sp1;

//那么php中如何回滚点设置呢


$PDO->exec('savepoint sp1');
$PDO->exec('rollback to sp1');

总结:

  事务的本质是由既定SL指令完成,二事务具体操作内容一定是外部指定的SQL(写操作)来处理

扫描二维码关注公众号,回复: 10054073 查看本文章

  PDO提供了事务固定内容的封装,包括开启事务(PDO::beginTransction) 执行事务(PDO::exec()) 终止事务(PDO::commit()成功提交事务

    PDO::rollBack()失败回滚事务);

  回滚点可以通过PDO::exec();方法来设定

  如果不采用PDO的事务机制,也可以完全利用PDO::exec()来实现

猜你喜欢

转载自www.cnblogs.com/xiaowie/p/12545240.html