Home > Backend Development > PHP Tutorial > php5以上一次执行多条SQL语句

php5以上一次执行多条SQL语句

PHPz
Release: 2018-10-08 16:05:11
forward
2106 people have browsed it

使用mysqli对象中的query()方法每次调用只能执行一条SQL命令。如果需要一次执行多条SQL命令,就必须使用mysqli对象中的 multi_query()方法。具体做法是把多条SQL命令写在同一个字符串里作为参数传递给multi_query()方法,多条SQL之间使用分号 (;)分隔。如果第一条SQL命令在执行时没有出错,这个方法就会返回TRUE,否则将返回FALSE。

因为multi_query()方法能够连接执行一个或多个查询,而每条SQL命令都可能返回一个结果,在必要时需要获取每一个结果集。所以对该方 法返回结果的处理也有了一些变化,第一条查询命令的结果要用mysqli对象中的use_result()或store_result()方法来读取,当 然,使用store_result()方法将全部结果立刻取回到客户端,这种做法效率更高。另外,可以用mysqli对象中的 more_results()方法检查是否还有其他结果集。如果想对下一个结果集进行处理,应该调用mysqli对象中的next_result()方 法,获取下一个结果集。这个方法返回TRUE(有下一个结果)或FALSE。如果有下一个结果集,也需要使用use_result()或 store_result()方法来读取。执行多条SQL命令代码如下所示:

<span style="font-family: 微软雅黑,Microsoft YaHei; font-size: 14px;">    <?php<br/>        $mysqli = new mysqli("localhost", "mysql_user","mysql_pwd", "demo");   //连接MySQL数据库<br/>        if (mysqli_connect_errno())<br/>        {                                     //检查连接错误<br/>             printf("连接失败: %s<br>", mysqli_connect_error());<br>             exit();<br>        }<br>        /* 将三条SQL命令使用分号(;)分隔, 连接成一个字符串 */<br>        $query = "SET NAMES GB2312;";                             //设置查询字符集为GB2312<br>        $query .= "SELECT CURRENT_USER();";                           //从MySQL服务器获取当前用户<br>        $query .= "SELECT name,phone FROM contactinfo LIMIT 0,2";     //从contactinfo表中读取数据<br>        if ($mysqli->multi_query($query)) {                       //执行多条SQL命令<br>            do {<br>                 if ($result = $mysqli->store_result()) {                     //获取第一个结果集<br>                      while ($row = $result->fetch_row()) {                         //遍历结果集中每条记录<br>                        foreach($row as $data){                                      //从一行记录数组中获取每列数据<br>                            echo $data."  ";                           //输出每列数据<br>                         }<br>                        echo "<br>";                                       //输出换行符号<br>                   }<br>                          $result->close();                               //关闭一个打开的结果集<br>                  }<br>              if ($mysqli->more_results()) {                         //判断是否还有更多的结果集<br>                 echo "-----------------<br>";                       //输出一行分隔线<br>              }<br>            } while ($mysqli->next_result());                          //获取下一个结果集,并继续执行循环<br>         }<br>        $mysqli->close();                                //关闭mysqli连接<br>    ?> <br></span>
Copy after login

输出结果如下所示:

  1. mysql_user@localhost  

  2. -----------------  

  3. 高某某   15801688338  

  4. 洛某某   15801681234

在上面的示例程序中,使用mysqli对象中的multi_query()方法一次执行三条SQL命令,获取多个结果集并从中遍历数据。如果在命令 的处理过程中发生了错误,multi_query()和next_result()方法就会出现问题。multi_query()方法的返回值,以及 mysqli的属性errno、error、info等只与第一条SQL命令有关,无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行 multi_query()方法的返回值是TRUE时,并不意味着后续命令在执行时没有出错。

更多相关教程请访问 php编程从入门到精通全套视频教程

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template