php事務處理方法

企業獵人發表於2016-06-17
<?php
//資料庫連線
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('test', $conn);
mysql_query("SET NAMES GBK");

/*
支援事務的表必須是InnoDB型別
一段事務中只能出現一次:
mysql_query('START TRANSACTION');//開始事務
mysql_query(' ROLLBACK ');//回滾事務
mysql_query('COMMIT');//提交事務

如果一段事務中出現多次回滾事務,則在,提交事務時只將第一次回滾前至開始事務後對資料庫的所有操作取消,第一次回滾後至提交事務前所有對資料庫操作仍將有效,所以一般將回滾語句僅放在提交事務語句前
如果一段事務無提交語句,則從開始事務時以下的所有對資料庫操作雖執行(執行方法返回對錯),但對資料庫無影響,但是在執行下段開始事務語句時,前段事務自動提交
*/
mysql_query('START TRANSACTION');
$isBad = 0;

$ins_testTable1 = "INSERT INTO testtable1(NAME,age)VALUES('first',23)";
if(!mysql_query($ins_testTable1)){
    $isBad =1;
}
//插入語句欄位名有錯
$ins_testTable2 = "INSERT INTO testtable1(NAME,ages)VALUES('second','24')";
if(!mysql_query($ins_testTable2)){
    $isBad =1;
}
if($isBad == 1){
    echo $isBad;
    mysql_query('ROLLBACK ');
}
mysql_query('COMMIT');
mysql_close($conn);
?>

相關文章