mysqli对象中的multi_query()方法
具体做法:
把多条SQL命令写在同一个字符串里作为参数传递给multi_query()方法,多条SQL之间使用分号(;)分隔。如果第一条命令在执行里没有出错,这个方法就会返回TRUE,否则返回FALSE 。
由于multi_query()方法能够连接执行一个或多个查询,而每条SQL命令都可能返回一个结果,在必要时需要获取每一个结果集。所以对该方法返回结果的处理也有一些变化,第一条查询命令的结果要用mysqli对象中的use_result()或store_result()方法来读取,当然,使用store_result()方法将全部结果立刻返回到客户端,这种做法效率更高。另外,可以用mysqli对象中的more_results()方法检查是否还有其他的结果集。
如果想对下一个结果集进行处理,应该调用mysqli对象中的next_results()方法,获取下一个结果集。这个方法返回TRUE或FALSE。
如果有下一个结果集,也需要使用use_result()或store_result()方法来读取。
执行多条SQL命令代码如下:
<?php
$mysqli=new mysqli("localhost","mysql_user","mysql_pwd","my_db_name");
/* check connection */
if($mysqli->mysql_connect_errno()){
printf ("连接失败:%s<br>",mysql_connect_error());
exit();
}
$query="SET NAMES GB2312;";
$query.="SELECT CURERENT_USER();" //获取使用连接的用户名
$query.="SELECT name,phone FROM contactinfo LIMIT 2";
/* execute multi query */
if($mysqli->multi_query($query)){
do{
if($result=$mysqli->store_result()){
//$mysqli->store_result() 获取第一个结果集
while($row=$result->fetch_row()){
foreach($row as $data){
echo $data." ";
}
}
echo ‘<br>‘;
}
if($mysqli->more_results()){
echo "----------------------------<br>";
}
}while($mysqli->next_result());
}
/* close connection */
$mysqli->close();
?>
注:
在以上示例中,使用mysqli对象中的multi_query()方法一次执行三条SQL命令,获取多个结果集并从中遍历数据。如果在命令的处理过程中发生了错误,multi_query()和next_result()方法就会出现问题。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。