第8讲:mysqli批量执行和事务控制由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第8章事务与并发控制”。
批量执行sql语句
①批量执行dml语句 ②批量执行dql语句
批量执行dml语句 1.基本语法
$sqls=”sql1;sql2;sql3…”
mysqli::multi_query($sqls);
注:$sqls=”insert into #1;”;$sqls.=”insert into #2;”;$sqls.=”insert into #3;”;
注意;与.的使用
批量执行dql语句(可以一次性的取回多个结果集)1.步骤:
①实例化对象②批量查询③处理结果④关闭资源
2.代码
$sqls=“select * from words;”;
//22222 $sqls.=“select * from msg”;
//22222 //如果成功,则至少有一个结果集
if($res=$mysqli->multi_query($sqls)){
//33接受并处理多个结果集
do{
$result=$mysqli->store_result();
while($row=$result->fetch_row()){
foreach($row as $key =>$val){
echo “--$val”;
}
echo“”;
}
$result->free();
//4444 处理资源
if(!$mysqli->more_results()){
break;
}
echo “********新的结果集**********”;
}while($mysqli->next_result());} ?> 注:
1.因为有多个结果集,所以处理时,先对结果集作循环;再对单个结果集中的行内容作循环。
事务处理(保证数据的一致性)1.事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的的dml语句要么全部成功,要么全部失败。
2.connect_error){
die($mysqli->connect_error);}
$mysqli->autocommit(false);
$sql1=“update account set balance=balance-2 where id=1”;$sql2=“update account set balance=balance+2 where id=2”;
$b1=$mysqli->query($sql1);$b2=$mysqli->query($sql2);
if(!$b1||!$b2){
echo “失败,回滚”.$mysqli->error;
//回滚
$mysqli->roolback();}else{
echo “成功”;
$mysqli->commit();//此处提交了就不能再回滚
}
$mysqli->close();?>
3.在mysqli 控制台也可以使用事务操作,具体步骤如下: ①开启一个事物
start transaction ②作保存点(不作保存点的话,默认事务开始为保存点).savepoint 保存点名称 ③操作…
④可以回滚,也可以提交
Ⅰ.如果没有问题就提交: commit Ⅱ.有问题,就回滚: rollback to 保存点.4.事物的4大特点:acid
①原子性:指事务是一个不可分割的工作单位,事务要么都发生,要么都不发生 ②一致性:事务必须使数据库一个一致性状态交换到另外一个一致性状态
③隔离性:数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
④持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久性的。