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时,并不意味着后续命令在执行时没有出错。
具体做法:将多条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时,并不意味着后续命令在执行时没有出错。
相关文章推荐
- 使用mysqli一次执行多条SQL语句
- MyBatis一次执行多条SQL语句
- mybatis一次请求执行多条sql
- Oracle中一次执行多条SQL语句需要注意的地方
- Ibatis -- 一次执行多条SQL
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- C# 一次执行多条SQL语句,Oracle11g数据库
- 如何在Oracle中一次执行多条sql语句,结束符很重要
- MyBatis一次执行多条SQL语句
- C#一次连接数据库执行多条sql语句(三种方法)
- 根据查询查来的记录,一次执行多条SQL(存储过程)
- mysql -- 一次执行多条sql语句
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- MyBatis 一次执行多条SQL语句
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- 在Oracle中一次执行多条sql语句报错:ORA-00911:invalid character
- 使用MyBatis一次执行多条SQL语句,需要配置jdbc连接串
- 如何在Oracle中一次执行多条sql语句【ado.net】
- MyBatis一次执行多条SQL语句
- Java 一次执行多条sql