您的位置:首页 > 数据库 > MySQL

mysqli一次执行多条SQL命令

2011-11-14 20:01 351 查看
使用mysqli对象中的query()方法每次调用只能执行一条SQL命令。如果需要一次执行多条SQL命令,就使用到mysqli对象中的multi_query()方法。

具体做法:将多条SQL命令写在同一个字符串里,作为参数传递给multi_query()方法,多条SQL之间使用“;”号分隔。若第一条SQL命令在执行时没有出错,就会返回true,否 则返回false。

例如:

<?php

$mysqli = new mysqli("localhost","root","密码","库名"); //连接数据库

if(mysqli_connect_error()){ //检查连接,若错误

printf("连接失败:",mysqli_connect_error());

exit();

}

$query = "set names utf8;select current_user();select name from 表";

if($mysqli->multi_query($query)){ //执行多条SQL语句

do{

if($result = $mysqli->store_result()){ //获取第一个结果集

while($row = $result->fetch_row()){ //遍历结果集中的每条数据

foreach($row as $data){ //从每行记录数组中获取每列数据

echo $data; //输出每列数据

}



$result->close(); //关闭一个打开的结果集

}

if($mysqli->more_result()){ //判断是否还有更多的结果集

}

}while($mysqli->next_result()); //获取下一个结果集,并继续执行循环

}

$mysqli->close(); //关闭mysqli连接

?>

在上面的例子中,如果在命令的处理过程中发生了错误,multi_query()和next_result()方法就会出现问题。multi_query()方法的返回值,以及mysqli的属性errno、error、info等只与第一条SQL命令有关,无法判断第二条以及以后的命令是否在执行时发生了错误。所以在执行multi_query()方法的返回值是true时,并不意味着后续命令在执行时没有出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: