一、資料引擎innodb用begin,rollback,commit來實現提交事務處理,begin開始事務後出現錯誤就rollback事務回滾或者沒有錯誤就commit提事務提交確認完成。
start transaction 開始是事務begin和end之間是執行的語句塊,set autocommit=0不讓事務自動提交設定後要在結束set autocommit=1。
下面是針對支援事務處理的資料表引擎例子。
mysql_query("start transaction");mysql_query("set autocommit=0");
mysql_query("begin");
$sql = "insert into student ( name,num) values ( 'test1', '0')";
$sql2 = "insert into student ( name,num) values ( null, '0')";//
寫錯$res = mysql_query($sql
);$res1 = mysql_query($sql2
); if($res && $res1
)else
mysql_query("set autocommit=1");
mysql_query("end");
二、對於不支援事務的myisam引擎資料庫可以使用表鎖定的方法:
myisam & innodb 都支援,lock tables可以鎖定用於當前執行緒的表。如果表被其它執行緒鎖定,則造成堵塞,直到可以獲取所有鎖定為止。unlock tables可以釋放被當前執行緒保持的任何鎖定。當執行緒發布另乙個lock tables時,或當與伺服器的連線被關閉時,所有由當前執行緒鎖定的表被隱含地解鎖。
下面例子是針對不支援事務提交而使用表鎖的例子
mysql_query("lock tables student write");//鎖住student表write 也可以是read
$sql = "insert into student ( name,num) values ( '三生三世', '0')";
$res = mysql_query($sql
);if($res
)else
mysql_query("unlock tables");//
解除鎖定
密碼:bh49
PHP mysql 事務處理例項
最新動態 例項一.php conn mysql connect localhost root root or die 資料連線錯誤 mysql select db test conn mysql query set names gbk 使用gbk中文編碼 開始乙個事務 mysql query beg...
PHP mysql 事務處理例項
最新動態 例項一.conn mysql connect localhost root root or die 資料連線錯誤 mysql select db test conn mysql query set names gbk 使用gbk中文編碼 開始乙個事務 mysql query begin 或...
PHP mysql 事務處理例項
例項一.php conn mysql connect localhost root root or die 資料連線錯誤 mysql select db test conn mysql query set names gbk 使用gbk中文編碼 開始乙個事務 mysql query begin 或者...