u010861037 2014-12-09 09:12
浏览 538

mysqli中执行多条语句同时事物处理

<?php
$mysqli=new mysqli("localhost","root","root","bookstore");
if($mysqli->connect_error){
echo "link bookstore database fail:".$mysqli->connect_error;
}
// $mysqli->autocommit(0);
$sqls="create table zh(id int auto_increment primary key,name varchar(60) not null default '',ye double not null default'0.00')type=InnoDB;";
$sqls="insert into zh(id,name,ye)values('1','zhangsan','2000');";
$sqls.="insert into zh (name,ye) values('lisi',3000);";
if($result=$mysqli->multi_query($sqls)){
echo "zh database operation success"."
";
echo $mysqli->affected_rows."
";
}else{
echo "database link fail:".$mysqli->errno."fail error:".$mysqli->error."
";
}
// $mysqli=new mysqli("localhost","root","root","bookstore");
$mysqli->autocommit(0);
$error=true;
$price=50;
$sql="update zh set ye=ye-{$price} where name='zhangsan'";
$results=$mysqli->query($sql);
if(!$results){
$error=false;
echo"zhangsan transfer failed"."
";
}else{
echo $mysqli->affected_rows."
";
if($mysqli->affected_rows==0){
$error=false;
echo "zhangsan money not have change"."
";
}else{
echo "zhangsan money transfer out success"."
";
}
}
$sql="update zh set ye=ye+{$price} where name='lisi'";
$results=$mysqli->query($sql);
if(!$results){
$error=false;
echo "transfer money failed for lisi"."
";
}else{
echo $mysqli->affected_rows."
";
if($mysqli->affected_rows==0){
$error=false;
echo "lisi money has not change"."
";
}else{
echo "lisi money transfer into success"."
";
}
}
if($error){
echo "transfer success"."
";
$mysqli->commit();
}else{
echo "transfer failed"."
";
$mysqli->rollback();
}
$mysqli->autocommit(1);
$mysqli->close();

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算
    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了