PHP对MYSQL数据库进行事务处理及表锁定

来源:互联网 发布:找网络推手 编辑:程序博客网 时间:2024/04/29 10:55
$link = mysql_connect('localhost', 'root', '');            if (!$link) {            die('Could not connect: ' . mysql_error());            }            mysql_select_db('test', $link) or die ('Can/'t use [test]: ' . mysql_error());            mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");            //若不使用事務,則$sql執行成功,$sql1執行失敗            $sql = " insert into test values('11','88') ";            $sql1 = " insert into test values('11','88','444') ";            $res = mysql_query($sql);            $res1 = mysql_query($sql1);            //因爲使用了事務,則兩個insert都執行失敗            if($res && $res1){            mysql_query("COMMIT");            } else{            mysql_query("ROLLBACK");            }            mysql_close($link);// connect db....            mysql_query("SET AUTOCOMMIT=0"); //設置mysql不自動提交,需自行用commit語句提交            $sql = " insert into test values('11','88') ";            $sql1 = " insert into test values('11','88','444') ";            $res = mysql_query($sql);            $res1 = mysql_query($sql1);            //因爲使用了事務,則兩個insert都執行失敗            if($res && $res1){            mysql_query("COMMIT");            }else{            mysql_query("ROLLBACK");            }//对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法:            //MyISAM & InnoDB 都支持,            //Notes:query語句不能寫在一起如:mysql_query("select * from a;select * from b;");            $sql_1=" LOCK TABLES test WRITE ";            mysql_query($sql_1);            $sql_2=" INSERT INTO test VALUES('".$a."','".$b."') ";            if(mysql_query($sql_2)){            echo 'successful!';            }else{            echo 'Unsuccessful!';            }            $sql_3=" UNLOCK TABLES ";            mysql_query($sql_3);            // close db...