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

字號(hào):


    具體實(shí)例如下所示:
    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ù)時(shí)只將第一次回滾前至開始事務(wù)后對(duì)數(shù)據(jù)庫的所有操作取消,第一次回滾后至提交事務(wù)前所有對(duì)數(shù)據(jù)庫操作仍將有效,所以一般將回滾語句僅放在提交事務(wù)語句前
    15如果一段事務(wù)無提交語句,則從開始事務(wù)時(shí)以下的所有對(duì)數(shù)據(jù)庫操作雖執(zhí)行(執(zhí)行方法返回對(duì)錯(cuò)),但對(duì)數(shù)據(jù)庫無影響,但是在執(zhí)行下段開始事務(wù)語句時(shí),前段事務(wù)自動(dòng)提交
    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//插入語句字段名有錯(cuò)
    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?>