ADODB的事务(mysql事务)

  1. 在ADODB中,开始事务使用BeginTrans()方法,提交事务使用CommitTrans()方法,回滚事务用RollbackTrans()。网上还有这样使用的,不过本人没有试验成功。ADODB的StartTrans()方法和CompleteTrans()方法则会自动地处理错误,并适当地进行提交(Commit)或回滚(Roll Back)。如果需要,还可以通过FailTrans()方法来强制执行回滚(Roll Back)。进行事务处理的示例如下:
  2. include('adodb/adodb.inc.php');  
  3. $conn = ADONewConnection('mysqli');  //MySQL数据库,注意此处是mysqli,如果改成mysql将不能支持事务,这是adodb的限制。这是本人的试验结果,不敢保证一定正确。
  4. $db_host="localhost";                               //主机名  
  5. $db_user="root";                                        //连接数据库的用户名  
  6. $db_pass="root";                                        //连接数据库的密码  
  7. $db_name="sunyang";                                     //连接的数据库名  
  8. $conn->Connect($db_host, $db_user, $db_pass, $db_name); //连接数据库  
  9. $query1="update employee set emp_age=30 where emp_id=1 ";  
  10. $query2="update employee set emp_age=35 where emp_id=3 ";  
  11. $conn->BeginTrans();                             //开始事务  
  12. $ok=$conn->Execute($query1);  
  13. if($ok)$ok=$conn->Execute($query2);
  14. if$($ok){ 
  15. $conn->CommitTrans();                         //提交事务  
  16. }
  17. else {
  18. $conn->RollbackTrans();    //出错,回滚事务
  19. }
  20. $conn->Close();  
  21. ?> 

ADODB还提供了HasFailedTrans()方法来获知事务的处理是成功了还是失败了,如果处理事务失败则HasFailedTrans()方法将返回true,成功返回false,应用HasFailedTrans()方法的示例代码如下。

 
 
  1. $conn
->BeginTrans();         //开始事务   $conn ->Execute( $query1 );  $conn ->Execute( $query2 );   $conn ->CommitTrans();          //提交事务   if( $conn ->HasFailedTrans()) {   // "事务处理失败" ;  

 }

 

 

 

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");}

 

转载于:https://www.cnblogs.com/cyw080/archive/2009/12/08/1619408.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值