PHP mysql 事務處理例項

2021-07-06 08:20:52 字數 1605 閱讀 8847

例項一.

php**  

$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");    

例項二php**  

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時,或當與伺服器的連線被關閉時,所有由當前執行緒鎖定的表被隱含地解鎖。

*/php**  

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 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 或...

mysql事務處理 例項

事務處理機制在程式開發過程中有著非常重要的作用,它可以使整個系統更加安全,例如在銀行處理轉賬業務時,如果a賬戶中的金額剛被發出,而b賬戶還沒來得及接收就發生停電,這會給銀行和個人帶來很大的經濟損失。採用事務處理機制,一旦在轉賬過程中發生意外,則程式將回滾,不做任何處理。mysql的事務處理主要有兩種...