mysqli事务处理demo

<?php  $mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");

 //关闭自动提交 $mysqli->autocommit(0);

 $error=true;

 $price=50;

 $sql="update zh set ye=ye-{$price} where name='zhangsan'";    $result=$mysqli->query($sql);

 if(!$result){   $error=false;   echo "从张三转出失败<br>";  }else{   if($mysqli->affected_rows==0){    $error=false;    echo "张三的钱没有变化";    }else{    echo "从张三账号中转出成功!<br>";   }  }

 $sql="update zh set ye=ye+{$price} where name='lisi1'";

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

 if(!$result){   $error=false;   echo "从李四转入失败<br>";  }else{   if($mysqli->affected_rows==0){    $error=false;    echo "李四的钱没有变化";    }else{    echo "向李四账号中转入成功!<br>";   }  }

 if($error){   echo "转账成功!";   $mysqli->commit();  }else{   echo "转账失败!";   $mysqli->rollback();  }

 $mysqli->autocommit(1);//完成后开启自动提交  $mysqli->close();

注意:操作的数据表的存储引擎(表类型)必须是InnoDB或者是BDB(不常用),因为只有这两类型的表才支持事务处理。修改数据表类型alter table demo type=InnoDB;

原文地址:https://www.cnblogs.com/toward-the-sun/p/3970658.html