PHP操作MySQL事务实例
《:PHP操作MySQL事务实例》要点: PHP实例本篇章节讲解PHP操作MySQL事务的办法,分享给大家供大家参考.具体办法如下: PHP实例一般来说,事务都应该具备ACID特征.所谓ACID是Atomic(原子性),Consistent(一致性),Isolated(隔离性),Durable(持续性)四个词的首字母所写,下面以“银行转帐”为例来分别说明一下它们的含义: PHP实例① 原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分.换句话说,事务是不可分割的最小单元.比如:银行转帐过程中,必须同时从一个帐户减去转帐金额,并加到另一个帐户中,只改变一个帐户是不合理的. PHP实例在PHP中,mysqli 已经很好的封装了mysql事务的相关操作.如下示例:
代码如下:
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail? set FScore = 300 where ID= '123456'"; $sql3 = "insert into? ScoreDetail ID,Score) values ('123456',60)"; $mysqli = new mysqli('localhost','root','','DB_Lib2Test'); $mysqli->autocommit(false);//开始事物 $mysqli->query($sql1); $mysqli->query($sql2); if(!$mysqli->errno){ ? $mysqli->commit(); ? echo 'ok'; }else{ ?echo 'err'; ? $mysqli->rollback(); } 在这里,我们再使用 php mysql 系列函数执行事务.
代码如下:
$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail? set FScore = 300 where ID= '123456'"; $sql3 = "insert into? ScoreDetail ID,60)"; $conn = mysql_connect('localhost',''); mysql_select_db('DB_Lib2Test'); mysql_query('start transaction'); //mysql_query('SET autocommit=0'); mysql_query($sql1); mysql_query($sql2); if(mysql_errno ()){ ??? mysql_query('rollback'); ??? echo 'err'; }else{ ??? mysql_query('commit'); ??? echo 'ok'; } // mysql_query('SET autocommit=1'); // mysql_query($sql3); PHP实例在这里要注意: PHP实例MyISAM:不支持事务,用于只读程序提高性能 PHP实例希望本文所述对大家的PHP+MySQL数据库程序设计有所赞助. 欢迎参与《:PHP操作MySQL事务实例》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |