首先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();?>