- 在ADODB中,开始事务使用BeginTrans()方法,提交事务使用CommitTrans()方法,回滚事务用RollbackTrans()。网上还有这样使用的,不过本人没有试验成功。ADODB的StartTrans()方法和CompleteTrans()方法则会自动地处理错误,并适当地进行提交(Commit)或回滚(Roll Back)。如果需要,还可以通过FailTrans()方法来强制执行回滚(Roll Back)。进行事务处理的示例如下:
- include('adodb/adodb.inc.php');
- $conn = ADONewConnection('mysqli'); //MySQL数据库,注意此处是mysqli,如果改成mysql将不能支持事务,这是adodb的限制。这是本人的试验结果,不敢保证一定正确。
- $db_host="localhost"; //主机名
- $db_user="root"; //连接数据库的用户名
- $db_pass="root"; //连接数据库的密码
- $db_name="sunyang"; //连接的数据库名
- $conn->Connect($db_host, $db_user, $db_pass, $db_name); //连接数据库
- $query1="update employee set emp_age=30 where emp_id=1 ";
- $query2="update employee set emp_age=35 where emp_id=3 ";
- $conn->BeginTrans(); //开始事务
- $ok=$conn->Execute($query1);
- if($ok)$ok=$conn->Execute($query2);
- if$($ok){
- $conn->CommitTrans(); //提交事务
- }
- else {
- $conn->RollbackTrans(); //出错,回滚事务
- }
- $conn->Close();
- ?>
ADODB还提供了HasFailedTrans()方法来获知事务的处理是成功了还是失败了,如果处理事务失败则HasFailedTrans()方法将返回true,成功返回false,应用HasFailedTrans()方法的示例代码如下。
- $conn
}
mysql原来的写法:
mysql_query("SET AUTOCOMMIT=0");
$ok1 = $db->Execute("update users set county='45568456454' where id=33");
$ok2=$db->Execute("update users set county='399' where id=34;
if ($ok1 && $ok2 ){ mysql_query("COMMIT");}
else {mysql_query("ROLLBACK");}