批量执行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.代码 <?php header(\"content-type:text/html;charset=utf-8\"); $mysqli= new mysqli(\"localhost\",\"root\",\"111111\",\"php\"); //111111
$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.<?php $mysqli=new mysqli(\"localhost\",\"root\",\"111111\",\"php\"); if($mysqli->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
①原子性:指事务是一个不可分割的工作单位,事务要么都发生,要么都不发生 ②一致性:事务必须使数据库一个一致性状态交换到另外一个一致性状态
③隔离性:数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
④持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久性的。