PDO类基本应用二

Posted xiaowie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(写操作)来处理

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

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

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

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

 

以上是关于PDO类基本应用二的主要内容,如果未能解决你的问题,请参考以下文章

染色体基因芯片分析和第二代测序应用的区别

php PHP:PDO片段

php PHP:PDO片段

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

为什么二代测序的原始数据中会出现Read重复现象?

二代身份证号码编码规则