multi_query()执行成功与否,和第一条的sql语句密切相关,如果第一条sql语句成功,那么不管后面的第几条sql语句是失败还是成功,都将返回true,换言之,如果第一条sql语句就已经失败了,后面的所有sql虽然为真,但也执行不到了,语句都将会返回false 。
demo1:
<?php
#设置头信息
header('content-type:text/html;charset=utf-8');
#创建数据库连接
$mysqli = @new mysqli('localhost','root','12345678','qinfb_school');//主机(服务器IP)、数据库用户、数据库密码、你要使用的数据库
if($mysqli -> errno){
//检测数据库的连接状态,如果数据库连接失败,给出报错反馈码和报错信息。
die('connect_error:'.$mysqli -> error);
}
#设置字符集
$mysqli -> set_charset('utf8');
#多条sql语句书写
$sql = "insert into student(stu_name,stu_psd,stu_age) values('松木',md5('123456'),21);";
$sql .= "update student set stu_age=11 where stu_id = 10;";
$sql .= "delete from student where stu_id = 37;";
//$mysqli -> query($sql);该实例下的query方法只能执行单条sql语句
#执行多条sql语句
$res = $mysqli -> multi_query($sql);
var_dump($res);
?>
数据库未更新之前:
![](https://img.haomeiwen.com/i19781462/70a4d819257edeb8.png)
数据库更新后:
![](https://img.haomeiwen.com/i19781462/a7e4eae427cc1361.png)
想要获取mysqli这个类下返回的查询结果集,需要调用mysqli这个类下面的use_result()方法或者store_result()方法,不过这里推荐使用store_result()方法,因为该方法更加高效,该方法会将查询到的所有结果集返回给客户端,store_result()方法的功能是:获取第一条sql语句查询产生的结果集
如果有更多的结果集返回,需要调用mysqli类下的more_results()方法:该方法通常在判断逻辑中使用,一般用作检测是否还有更多的结果集
next_result();该方法也是mysqli类下的一个方法,主要功能是:将结果集的指针向下移动一位,通常搭配more_results()方法使用,如果有更多的结果集,那么就让结果集的指针下移一位。
<?php
#设置头信息
header('content-type:text/html;charset=utf-8');
#创建数据库连接,new一个mysqli类
$mysqli = @new mysqli('localhost','root','12345678','qinfb_school');//主机(服务器IP)、数据库用户、数据库密码、你要使用的数据库
var_dump($mysqli);
if($mysqli -> errno){
//检测数据库的连接状态,如果数据库连接失败,给出报错反馈码和报错信息。
die('connect_error:'.$mysqli -> error);
}
#设置字符集
$mysqli -> set_charset('utf8');
#多条sql语句书写
$sql = "select stu_name,stu_psd,stu_age from student;";
$sql .= "select * from qinfb_school.student;";
$sql .= "select NOW();";
$sql .= "select CURRENT_USER();";
//$mysqli -> query($sql);该实例下的query方法只能执行单条sql语句
#执行多条sql语句
if($mysqli -> multi_query($sql)){
do {
if($mysql_result = $mysqli -> store_result()){
$rows[] = $mysql_result -> fetch_all(MYSQLI_ASSOC);//返回关联部分的所有结果集
}
}while($mysqli -> more_results() && $mysqli -> next_result());//如果还有更多的结果集,让结果集的指针下移一位
}else {
echo $mysqli -> error;//如果有报错
}
print_r($rows);
$mysqli -> close();//关闭数据库连接,释放结果集
?>
返回的是一个三维数组
![](https://img.haomeiwen.com/i19781462/4df0cd05b5ed5a08.png)
注意:sql语句拼接的写法,语句结束分号不能少,不然可能报错,但写单个sql语句的时候,不需要加;
$sql = "select stu_name,stu_psd,stu_age from student;";
$sql .= "select * from qinfb_school.student;";
$sql .= "select NOW();";
$sql .= "select CURRENT_USER();";
网友评论