> 백엔드 개발 > PHP 튜토리얼 > 什么情况下使用mysqli中multi_query()方法

什么情况下使用mysqli中multi_query()方法

PHPz
풀어 주다: 2020-09-05 09:56:42
원래의
2363명이 탐색했습니다.

在一次执行多条SQL命令的情况下使用mysqli中的“multi_query()”方法,具体做法是把多条SQL命令写在同一个字符串里作为参数传递给“multi_query()”方法,并且在多条SQL之间使用分号“;”分隔。

什么情况下使用mysqli中multi_query()方法

mysqli对象中的multi_query()方法

一次执行多条SQL命令使用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 &#39;<br>&#39;;
            }
                    
            if($mysqli->more_results()){
                echo "----------------------------<br>";
            }
        }while($mysqli->next_result());
    }
    /* close connection */
    $mysqli->close();
?>
로그인 후 복사

注:

        在以上示例中,使用mysqli对象中的multi_query()方法一次执行三条SQL命令,获取多个结果集并从中遍历数据。如果在命令的处理过程中发生了错误,multi_query()和next_result()方法就会出现问题。

        multi_query()方法的返回返回值,以及mysqli的属性errno、error、info等只与第一条SQL命令有关,无法判断第二条及以后的命令是否在执行时发生了错误。所以在执行multi_query()方法的返回值是TRUE时,并不意味着后续命令在执行时没有出错。

更多相关技术文章,请访问PHP中文网

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿