php+Mysqli利用事务处理转账问题实例

本文实例讲述了php+Mysqli利用事务处理转账问题的方法。分享给大家供大家参考

 

<?php 

/**php+Mysqli利用事务处理转账问题实例

 * author http://www.lai18.com

 * date 2015-04-19

 * version 1

 **/

  header("Content-type:text/html; charset=utf-8"); 

   

  $mysqli = new mysqli("localhost", "root", "064319", "php"); 

  $mysqli->set_charset("utf8"); 

   

  if($mysqli->connect_errno) { 

   die('数据库连接失败'.$mysqli->connect_error); 

  } 

   

  $mysqli->autocommit(false); //自动提交模式设为false 

  $flag = true; //事务是否成功执行的标志 

   

  $query = "update account set balance=balance-1000 where id=3"; 

  $result = $mysqli->query($query); 

  $affected_count = $mysqli->affected_rows; 

  if(!result || $affected_count == 0) {  //失败 

   $flag = false;   

  } 

   

  $query = "update account set balance=balance+1000 where id=2"; 

  $result = $mysqli->query($query); 

  $affected_count = $mysqli->affected_rows; 

  if(!$result || $affected_count == 0) { 

   $flag = false; 

  } 

   

  if($flag) { 

   $mysqli->commit(); 

   echo '转账成功'; 

  } else { 

   $mysqli->rollback(); 

   echo '转账失败'; 

  } 

   

  $mysqli->autocommit(true); //重新设置事务为自动提交 

  $mysqli->close(); 

?>

参考来源: 
php+Mysqli利用事务处理转账问题实例
http://www.lai18.com/content/368652.html

你可能感兴趣的:(mysql)