PHP操作MySQL事务实例
本文介绍了mysql操作的php事务处理方法,供大家分享,供大家参考。具体方法如下:一般来说,交易必须有酸的特点。所谓的酸是用四个单词的第一个字母,即Atomic(原子性),一致性(一致性)、分离(隔离)和持久性(连续性)。接下来,我们以银行转账为例来说明它们的含义。
(1)原子性:一个声明,包括事务处理,形成一个逻辑单元,不仅可以执行它的一部分。换句话说,一个事务是一个不可分割的最小单元。例如,在银行转账的过程中,我们必须扣除转让金额从一个帐户并将其添加到另一个账户上同一时间。只更改一个帐户是不合理的。
一致性:之前和之后的交易执行的数据库是一致的。也就是说,交易应该正确的系统状态的正确。例如,在银行转账过程中,无论是量的转移金额从一个帐户转移到另一个,或两个账户不变的情况下,有没有其他的情况。
隔离:一个事务不影响另一个事务的处理,也就是说,没有事务可以在不完整的状态下看到事务。例如,在银行转帐过程中,另一个事务只能在等待事务未提交之前处于等待状态。
持久性:事务处理的效果可以永久保存。反过来,事务应该能够抵御所有故障,包括服务器、进程、通信和媒体故障等。例如,在银行转帐过程中,可以在转帐之后保存帐户的状态。
在PHP中,mysqli具有良好的封装MySQL交易相关操作。下面的例子如下:
复制代码代码如下:$ SQL1 =更新用户设置scorecount = scorecount + 10 id是为123456;
$ SQL2 = 更新scoredetail集Fscore = 300 id是为123456;
为美元=插入scoredetail ID分数)值(为123456 ',60);
$ mysqli =新mysqli('localhost ','root ',' ','db_lib2test);
$ mysqli ->自动提交(假); / /。
$ mysqli ->查询($ SQL1);
$ mysqli ->查询($ SQL2);
如果(!$ mysqli -> errno){
$ mysqli ->提交();
echo'ok;
其他{ }
echo'err;
$ mysqli ->回滚();
}
在这里,我们使用mysql系列函数来执行事务。
复制代码代码如下:$ SQL1 =更新用户设置scorecount = scorecount + 10 id是为123456;
$ SQL2 = 更新scoredetail集Fscore = 300 id是为123456;
为美元=插入scoredetail ID分数)值(为123456 ',60);
美元mysql_connect conn =('localhost ','root ',');
mysql_select_db('db_lib2test);
mysql_query(开始交易);
/ / mysql_query(让自动提交= 0);
mysql_query($ SQL1);
mysql_query($ SQL2);
如果(mysql_errno()){
mysql_query('rollback);
echo'err;
其他{ }
mysql_query('commit);
echo'ok;
}
/ / mysql_query(让自动提交= 1);
/ / mysql_query($ SQL3);
注意这里:
MyISAM:不支持交易和使用只读程序以提高性能
InnoDB:支持ACID事务,行级锁,并发
伯克利DB:支持事务
希望本文能对大家设计mysql数据库程序有所帮助。