<?php
$db = new mysqli("localhost","root","","test"); //連線資料庫
$db->autocommit(false); //設定為非自動提交——事務處理
$sql1 = "insert into `test`.`test1` (`name` )values ('1' )";
$result1 = $db->query($sql1);
$sql2 = "insert into `test`.`test2` (`a` )values ('1')";
$result2 = $db->query($sql2);
if ($result1 && $result2) else
$db->autocommit(true); //設定為非自動提交——事務處理
$db->close();
?>
mysql的事務處理主要有兩種方法。
1、用begin,rollback,commit來實現
begin 開始乙個事務
rollback 事務回滾
commit 事務確認
2、直接用set來改變mysql的自動提交模式
$conn = mysql_connect('localhost','root','root') or die ("資料連線錯誤!!!");
mysql_select_db('test',$conn);
mysql_query("set names 'gbk'"); //使用gbk中文編碼;
//開始乙個事務
mysql_query("begin"); //或者mysql_query("start transaction");
$sql = "insert into `user` (`id`, `username`, `***`) values (null, 'test1', '0')";
$sql2 = "insert into `user` (`did`, `username`, `***`) values (null, 'test1', '0')";//這條我故意寫錯
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1)else
mysql_query("end");
/**************** transaction--2 *******************/
/*方法二*/
mysql_query("set autocommit=0"); //設定mysql不自動提交,需自行用commit語句提交
$sql = "insert into `user` (`id`, `username`, `***`) values (null, 'test1', '0')";
$sql2 = "insert into `user` (`did`, `username`, `***`) values (null, 'test1', '0')";//這條我故意寫錯
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1)else
mysql_query("end"); //事務處理完時別忘記mysql_query("set autocommit=1");自動提交
/******************對於不支援事務的myisam引擎資料庫可以使用表鎖定的方法:********************/
//myisam & innodb 都支援,
/*lock tables可以鎖定用於當前執行緒的表。如果表被其它執行緒鎖定,則造成堵塞,直到可以獲取所有鎖定為止。
unlock tables可以釋放被當前執行緒保持的任何鎖定。當執行緒發布另乙個lock tables時,或當與伺服器的連線被關閉時,所有由當前執行緒鎖定的表被隱含地解鎖。
*/mysql_query("lock tables `user` write");//鎖住`user`表
$sql = "insert into `user` (`id`, `username`, `***`) values (null, 'test1', '0')";
$res = mysql_query($sql);
if($res)else
mysql_query("unlock tables");//解除鎖定
PHP 使用事務簡單實現
db new mysqli localhost root test 連線資料庫 db autocommit false 設定為非自動提交 事務處理 sql1 insert into test test1 name values 1 result1 db query sql1 sql2 insert ...
php事務回滾簡單實現方法示例
本文例項講述了php事務回滾簡單實現方法。分享給大家供大家參考,具體如下 servername程式設計客棧 localhost username root password admin dbname test trycatch pdoexception e conn null 更多關於php相關內容...
php增加事務 php 事務
標籤 dbhost localhost 3306 mysql伺服器主機位址 dbname test dbuser root mysql使用者名稱 dbpass root mysql使用者名稱密碼 conn mysqli connect dbhost,dbuser,dbpass,dbname if c...