mysql之事務 事務處理 begin 開始一個事物 commit 事務確認 rollback 事務回滾 end 事務結束 innodb下可以實現事務 開始執行事務時如果在事務執行的過程中出現錯誤那麼事務會回滾之前執行的都會失效 在創建表時,就可以為table選擇InnoDB引擎了。如果是以前創建的表,可以使用
alter table table_name engine=InnoDB來改變數據表的引擎以支持事務。 例:
<?php
$conn = mysql_connect('localhost','root','') or die ("數據連接錯誤!!!");
mysql_select_db('shop',$conn);
mysql_query("set names 'utf8'"); //使用utf8中文編碼;
//開始一個事務
mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO main (num) VALUES (123)";
$sql2 = "INSERT INTO main (num1) VALUES (456)";//這條我故意寫錯
//如果不用事務或者用的而不是innodb引擎則$sql會成功$sql2會失敗
//用事務如果其中一條出現錯誤那麼兩條數據都不會執行成功
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '數據回滾。';
}
mysql_query("END");
?>