PHP mysqli事务

首先MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理,其余的类型是不支持的.先查看表的数据库类型是否支持事务php

在mysql中事务演示:html

SELECT * FROM t_user2;mysql

INSERT INTO t_user2(NAME,pwd,sex,age,birthday) VALUES('张三','123','1',18,'1990-6-6');sql

-- 开启事务
START TRANSACTION;
-- 设置回滚断点
SAVEPOINT a;
DELETE FROM t_user2;
SAVEPOINT b;
INSERT INTO t_user2(NAME,pwd,sex,age,birthday) VALUES('张三','123','1',18,'1990-6-6');数据库

-- 回滚
ROLLBACK TO b; ui

ROLLBACK TO a;htm

在PHP中mysqli扩展库,事务演示:事务

<?phputf-8

/**
* mysqli事务处理
*/

header("content-type:text/html;charset=utf-8");get

//mysqli事务
require("./DBHelper.class.php");

$dbhelper = DBHelper::getInstance();

$mysqli = new MYSQLI("wk.php","root","root","db_text");
!($mysqli->connect_error) or die("连接失败".$mysqli->connect_error);

//将提交设为false,事务一旦提交就没机会回滚
$mysqli->autocommit(false);


$sql1 = "update t_user2 set name = '李四' where id = 1";
$sql2 = "update t_user2 set nam = '王五' where id = 2";
$b1 = $mysqli->query($sql1);
$b2 = $mysqli->query($sql2);

if(!$b1 || !$b2){
echo "执行失败,回滚".$mysqli->error;
//回滚
$mysqli->rollback();
}else{
//提交
$mysqli->commit();
}

$mysqli->close();?>

相关文章
相关标签/搜索