具體實例如下所示:
01 <?php 02 //數據庫連接 03 $conn = mysql_connect('localhost', 'root', ''); 04 mysql_select_db('test', $conn); 05 mysql_query("SET NAMES GBK"); 06 07 /* 08 支持事務的表必須是InnoDB類型 09 一段事務中只能出現一次: 10 mysql_query('START TRANSACTION');//開始事務 11 mysql_query(' ROLLBACK ');//回滾事務 12 mysql_query('COMMIT');//提交事務 13 14 如果一段事務中出現多次回滾事務,則在,提交事務時只將第一次回滾前至開始事務後對數據庫的所有操作取消,第一次回滾後至提交事務前所有對數據庫操作仍將有效,所以一般將回滾語句僅放在提交事務語句前 15 如果一段事務無提交語句,則從開始事務時以下的所有對數據庫操作雖執行(執行方法返回對錯),但對數據庫無影響,但是在執行下段開始事務語句時,前段事務自動提交 16 */ 17 mysql_query('START TRANSACTION'); 18 $isBad = 0; 19 20 $ins_testTable1 = "INSERT INTO testtable1(NAME,age)VALUES('first',23)"; 21 if(!mysql_query($ins_testTable1)){ 22 $isBad =1; 23 } 24 //插入語句字段名有錯 25 $ins_testTable2 = "INSERT INTO testtable1(NAME,ages)VALUES('second','24')"; 26 if(!mysql_query($ins_testTable2)){ 27 $isBad =1; 28 } 29 if($isBad == 1){ 30 echo $isBad; 31 mysql_query('ROLLBACK '); 32 } 33 mysql_query('COMMIT'); 34 mysql_close($conn); 35 ?>