PHP使用Mysql事務(wù)實例解析

字號:


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