MySql - InnoDB - 事务 , Php版

开发技术 作者: 2024-08-19 12:45:02
(出处:http://www.cnblogs.com/linguanh/) 1,前序由于要重构APP(社交类) 服务端接口的部分代码,故接触到了 innoDB,以及事务这个词,下面主要是以例子的形式显示它的用法,理论的东西不过多讲述。 2,何为事务鄙人在编程方面的解释:多条命令操作放在一起处理 , 例如提交的时候一起提交,撤销的时候也是一起撤销,书本对这个词的定义内容很多。 3,myisam 与 innoDB  它们都是mysql数据库的引擎,我们一般建表默认的是 myisam 引擎,比较:http://www.cnblogs.com/vicenteforever/articles/1613119.html,个人认为,类似于insert、update、delete 这种操作如果涉及多表或单表互联操作的情况,为了避免数据写脏,请使用事务。因为整个过程中若一条错误,便可以回滚到开始时的状态。 4,分享个基于php的类 1 <?php23 /**4 * Created by PhpStorm.5 * User: 林冠宏6 * Date: 2016/4/287 * Time: 10:208 */9 include "Config.php"; /** 数据库配置信息类,自行完善 */1011 class Sql{12 public $link = null;13 private $config = null;14 /**15 * 是否直接开启事务16 */17 public function Sql($begin = false){18 $this->config = new Config();19 $this->connect();20 mysql_query("SET AUTOCOMMIT=0",$this->link); /** 设置不自动提交,默认是自动提交 */21 if($begin){22 $this->SWBegin();23 }24 }2526 public function connect(){27 $this->link = mysql_connect($this->config->host,$this->config->user,$this->config->pw); /** 连接数据库 */28 mysql_query("SET NAMES 'utf8'",$this->link); /** 经验总结,使用mysql设置页面编码,最好等链接了,再设置,意思是在连库函数后面使用 */2930 if(!$this->link){31 exit("connect_dataBase_wrong");32 }33 if(!mysql_select_db($this->config->db,$this->link)){34 exit("select_db_wrong");35 }36 }3738 /**39 * 命令、是否判断行数、出错是否自动启用回滚、链式提交40 */41 public function exec($query,$judgeLength=false,$rollBack = false,$isCommit=false){42 $res = mysql_query($query,$this->link);43 if($judgeLength){ /** 是否判断行数 */44 if(mysql_num_rows($res)<=0){45 return null;46 }47 }else{48 if(!$res){49 if($rollBack) {50 $this->rollBack();51 }52 exit($query); /** 抛出出错的 sql 语句 */53 }54 }55 if($isCommit){56 return $this;57 }else{58 return $res;59 }60 }6162 /** 开始事务 */63 public function SWBegin(){64 mysql_query("BEGIN",$this->link);65 }6667 /** 回滚 */68 public function rollBack(){69 mysql_query("ROLLBACK",$this->link);70 }7172 /** 提交事务 */73 public function commit($getThis=false){74 mysql_query("COMMIT",$this->link);75 if($getThis){76 return $this;77 }else{78 return null;79 }80 }81 }8283 ?>5,例子1 <?php2 /**3 * Created by PhpStorm.4 * User: 林冠宏5 * Date: 2015/10/246 * Time: 11:237 */89 include "Sql.php";10 $sql = new Sql();1112 /** 往 aa 表中插入一批数据,注意建aa表的时候要选择 innoDB 引擎 */13 for($i=0;$i<10;$i++){14 $temp = $i."k";15 $query = "insert into aa (a,w) values('$i','$temp')";16 $sql->exec($query);17 }1819 /** 下面的注释君请自行开启看效果 */20 //$sql->rollBack(); /** 回滚的话,上面的所有insert不会被执行 */21 //$sql->commit(); /** 不commit提交的话,上面的insert也不会被执行 */2223 /** select 操作不用commit也可以直接使用 结果集 */24 /*25 $result = $sql->exec("select * from aa");26 while($row = mysql_fetch_assoc($result)){27 print($row)."</br>";28 }29 */3031 ?>View Code  

 

<div class="cnblogs_code">

  
       
  "Config.PHP"; 
 
           =        =             
       sql( =          ->config =          ->         ("SET AUTOCOMMIT=0",->link); 
         (             ->   
               ->link = (->config->host,->config->user,->config->pw); 
         ("SET NAMES 'utf8'",->link); 
 
         (!->             ("connect_dataBase_wrong"          (!(->config->db,->             ("select_db_wrong"   
            
       (,=, = ,=          = (,->         (){ 
             (()<=0                            }             (!                 (                     ->                  (); 
           (                       }                 
     
               ("BEGIN",->  
     
               ("ROLLBACK",->  
     
       commit(=         ("COMMIT",->         (                       }                  
 ?>

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_64943.html

本站采用系统自动发货方式,付款后即出现下载入口,如有疑问请咨询在线客服!

售后时间:早10点 - 晚11:30点

咨询售后客服

推荐模板

推荐精华

热门标签