PHP基础 mysqli的事务处理
1: <?php
// PHP 的mysqli的事务处理
//========================================================
//执行多条sql语句,如果都成功则提交事务,如果一个执行失败则回滚事务
//把多条sql语句的执行看成一个sql语句,要么都成功,要么都失败
//例:银行转账
//mysql4.0以上版本都启用了事务
//但目前只有InnoDB和BDB两种表类型支持事务,
//在命令行中:默认创建的表类型为MyISAM表类型,是不支持事务的
//在命令行中建表时添加 type=InnoDB ,默认自动提交事务autocommit,不能回滚
//手动提交:
//1.关闭自动提交 set autocommit=0;
//2.开启事务 start transaction (mysqli中不需要开启,自动开启)
//3.$mysqli->query($sql); 执行sql
//4.判断执行是否成功
//5.如果都成功,则提交事务commit(),否则回滚事务 rollback()
17:
//创建连接对象
);
20:
if($error=$mysqli->connect_error){
.$error);
23: }
24:
//设置传输字符编码
'set names utf8');
// 或者
29:
//关闭自动提交事务
false);
32:
true;
34:
35: $price=50;
36:
;
;
39:
//执行sql语句
41: $result1 = $mysqli->query($sql1);
if(!$result1) {
false;
;
45: }
if($mysqli->affected_rows==0)
47: {
false;
;
50: }
51:
//执行sql语句
53: $result2 = $mysqli->query($sql2);
if(!$result2){
false;
;
57: }
if($mysqli->affected_rows==0)
59: {
false;
;
62: }
63:
//判断执行过程是否出错,如果语句都执行成功则提交事务,否则回滚事务
if ($error) {
66: $mysqli->commit();
;
else {
69: $mysqli->rollback();
;
71: }
72:
//打开自动提交事务
true);
75:
76: $mysqli->close();
77: ?>