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

相關文章
相關標籤/搜索