PHP操作MySQL事務(wù)實例
本文實例講述了PHP操作MySQL事務(wù)的方法,分享給大家供大家參考。具體方法如下:
一般來說,事務(wù)都應(yīng)該具備ACID特征。所謂ACID是Atomic(原子性),Consistent(一致性),Isolated(隔離性),Durable(持續(xù)性)四個詞的首字母所寫,下面以“銀行轉(zhuǎn)帳”為例來分別說明一下它們的含義:
① 原子性:組成事務(wù)處理的語句形成了一個邏輯單元,不能只執(zhí)行其中的一部分。換句話說,事務(wù)是不可分割的最小單元。比如:銀行轉(zhuǎn)帳過程中,必須同時從一個帳戶減去轉(zhuǎn)帳金額,并加到另一個帳戶中,只改變一個帳戶是不合理的。
② 一致性:在事務(wù)處理執(zhí)行前后,數(shù)據(jù)庫是一致的。也就是說,事務(wù)應(yīng)該正確的轉(zhuǎn)換系統(tǒng)狀態(tài)。比如:銀行轉(zhuǎn)帳過程中,要么轉(zhuǎn)帳金額從一個帳戶轉(zhuǎn)入另一個帳戶,要么兩個帳戶都不變,沒有其他的情況。
③ 隔離性:一個事務(wù)處理對另一個事務(wù)處理沒有影響。就是說任何事務(wù)都不可能看到一個處在不完整狀態(tài)下的事務(wù)。比如說,銀行轉(zhuǎn)帳過程中,在轉(zhuǎn)帳事務(wù)沒有提交之前,另一個轉(zhuǎn)帳事務(wù)只能處于等待狀態(tài)。
④ 持續(xù)性:事務(wù)處理的效果能夠被永久保存下來。反過來說,事務(wù)應(yīng)當(dāng)能夠承受所有的失敗,包括服務(wù)器、進程、通信以及媒體失敗等等。比如:銀行轉(zhuǎn)帳過程中,轉(zhuǎn)帳后帳戶的狀態(tài)要能被保存下來。
在PHP中,mysqli 已經(jīng)很好的封裝了mysql事務(wù)的相關(guān)操作。如下示例:
$sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
$sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//開始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
$mysqli->commit();
echo 'ok';
}else{
echo 'err';
$mysqli->rollback();
}
在這里,我們再使用 php mysql 系列函數(shù)執(zhí)行事務(wù)。
$sql2 = "update ScoreDetail set FScore = 300 where ID= '123456'";
$sql3 = "insert into ScoreDetail ID,Score) values ('123456',60)";
$conn = mysql_connect('localhost','root','');
mysql_select_db('DB_Lib2Test');
mysql_query('start transaction');
//mysql_query('SET autocommit=0');
mysql_query($sql1);
mysql_query($sql2);
if(mysql_errno ()){
mysql_query('rollback');
echo 'err';
}else{
mysql_query('commit');
echo 'ok';
}
// mysql_query('SET autocommit=1');
// mysql_query($sql3);
在這里要注意:
MyISAM:不支持事務(wù),用于只讀程序提高性能
InnoDB:支持ACID事務(wù)、行級鎖、并發(fā)
Berkeley DB:支持事務(wù)
希望本文所述對大家的PHP+MySQL數(shù)據(jù)庫程序設(shè)計有所幫助。
- Mysql數(shù)據(jù)庫高級用法之視圖、事務(wù)、索引、自連接、用戶管理實例分析
- mysql存儲過程事務(wù)管理簡析
- MySQL存儲過程例子(包含事務(wù),輸出參數(shù),嵌套調(diào)用)
- Mysql中的事務(wù)是什么如何使用
- MySql的事務(wù)使用與示例詳解
- mysql實現(xiàn)事務(wù)的提交和回滾實例
- 全面了解MySql中的事務(wù)
- PHP入門教程之使用Mysqli操作數(shù)據(jù)庫的方法(連接,查詢,事務(wù)回滾等)
- MySQL中Innodb的事務(wù)隔離級別和鎖的關(guān)系的講解教程
- mysql 鎖表鎖行語句分享(MySQL事務(wù)處理)
- 在Mysql存儲過程中使用事務(wù)實例
- mysql事務(wù)管理操作詳解
相關(guān)文章
Trying to clone an uncloneable object of class Imagic的解決方法
使用網(wǎng)上流傳的一個程序?qū)崿F(xiàn)pdf截圖為png,需要使用Imagic擴展2012-01-01
PHP中執(zhí)行MYSQL事務(wù)解決數(shù)據(jù)寫入不完整等情況
事務(wù)可以進行模擬SQL操作,當(dāng)所有的SQL都操作成功的時候才進行SQL操作,只要有一個操作失敗就回滾當(dāng)前事務(wù)的所有SQL操作,避免出現(xiàn)上面描述中出現(xiàn)的數(shù)據(jù)寫入不完整等情況2014-01-01
編寫安全 PHP應(yīng)用程序的七個習(xí)慣深入分析
本篇文章是對編寫安全-PHP應(yīng)用程序的七個習(xí)慣進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php數(shù)組添加與刪除單元的常用函數(shù)實例分析
這篇文章主要介紹了php數(shù)組添加與刪除單元的常用函數(shù),實例分析了array_push、array_pop、array_shift及array_unshift等函數(shù)的使用技巧,需要的朋友可以參考下2015-02-02

