美文网首页
MySQLi扩展面向对象:multi_query()执行多条语句

MySQLi扩展面向对象:multi_query()执行多条语句

作者: 似朝朝我心 | 来源:发表于2021-06-09 00:46 被阅读0次

multi_query()执行成功与否,和第一条的sql语句密切相关,如果第一条sql语句成功,那么不管后面的第几条sql语句是失败还是成功,都将返回true,换言之,如果第一条sql语句就已经失败了,后面的所有sql虽然为真,但也执行不到了,语句都将会返回false 。

demo1:

<?php
    #设置头信息
    header('content-type:text/html;charset=utf-8');
    #创建数据库连接
    $mysqli = @new mysqli('localhost','root','12345678','qinfb_school');//主机(服务器IP)、数据库用户、数据库密码、你要使用的数据库
    if($mysqli -> errno){
        //检测数据库的连接状态,如果数据库连接失败,给出报错反馈码和报错信息。
        die('connect_error:'.$mysqli -> error);
    }
    #设置字符集
    $mysqli -> set_charset('utf8');
    #多条sql语句书写
    $sql = "insert into student(stu_name,stu_psd,stu_age) values('松木',md5('123456'),21);";
    $sql .= "update student set stu_age=11 where stu_id = 10;";
    $sql .= "delete from student where stu_id = 37;";
    //$mysqli -> query($sql);该实例下的query方法只能执行单条sql语句
    #执行多条sql语句
    $res = $mysqli -> multi_query($sql);
    var_dump($res);

?>

数据库未更新之前:

数据库更新后:


想要获取mysqli这个类下返回的查询结果集,需要调用mysqli这个类下面的use_result()方法或者store_result()方法,不过这里推荐使用store_result()方法,因为该方法更加高效,该方法会将查询到的所有结果集返回给客户端,store_result()方法的功能是:获取第一条sql语句查询产生的结果集

如果有更多的结果集返回,需要调用mysqli类下的more_results()方法:该方法通常在判断逻辑中使用,一般用作检测是否还有更多的结果集

next_result();该方法也是mysqli类下的一个方法,主要功能是:将结果集的指针向下移动一位,通常搭配more_results()方法使用,如果有更多的结果集,那么就让结果集的指针下移一位。

<?php
    #设置头信息
    header('content-type:text/html;charset=utf-8');
    #创建数据库连接,new一个mysqli类
    $mysqli = @new mysqli('localhost','root','12345678','qinfb_school');//主机(服务器IP)、数据库用户、数据库密码、你要使用的数据库
    var_dump($mysqli);
    if($mysqli -> errno){
        //检测数据库的连接状态,如果数据库连接失败,给出报错反馈码和报错信息。
        die('connect_error:'.$mysqli -> error);
    }
    #设置字符集
    $mysqli -> set_charset('utf8');
    #多条sql语句书写
    $sql = "select stu_name,stu_psd,stu_age from student;";
    $sql .= "select * from qinfb_school.student;";
    $sql .= "select NOW();";
    $sql .= "select CURRENT_USER();";
    //$mysqli -> query($sql);该实例下的query方法只能执行单条sql语句
    #执行多条sql语句
    if($mysqli -> multi_query($sql)){
        do {
            if($mysql_result = $mysqli -> store_result()){
                $rows[] = $mysql_result -> fetch_all(MYSQLI_ASSOC);//返回关联部分的所有结果集
            }
        }while($mysqli -> more_results() && $mysqli -> next_result());//如果还有更多的结果集,让结果集的指针下移一位
    }else {
        echo $mysqli -> error;//如果有报错
    }
    print_r($rows);
    $mysqli -> close();//关闭数据库连接,释放结果集
?>

返回的是一个三维数组


注意:sql语句拼接的写法,语句结束分号不能少,不然可能报错,但写单个sql语句的时候,不需要加;

    $sql = "select stu_name,stu_psd,stu_age from student;";
    $sql .= "select * from qinfb_school.student;";
    $sql .= "select NOW();";
    $sql .= "select CURRENT_USER();";

相关文章

  • MySQLi扩展面向对象:multi_query()执行多条语句

    multi_query()执行成功与否,和第一条的sql语句密切相关,如果第一条sql语句成功,那么不管后面的第几...

  • 查看Django ORM执行的SQL语句

    查询QuerySet对象执行的SQL语句 查询当前执行的SQL包括Django内置执行的多条执行的SQL语句

  • 2018-12-16

    php用mysqli对象的query执行update时,如果语句有多个set,就会出错,每个语句只有一个set就没...

  • MySQLi扩展面向对象的基本使用

    通过MySQLi类库操作数据库的基本步骤: 1.建立到MySQL数据库的连接。 如果我们以面向对象的形式来操纵My...

  • PHP7连接数据库的方法

    * 在PHP7中已经废除了mysql库了,则只能使用mysqli及PDO mysqli面向对象风格 mysqli面...

  • MySQLi扩展了解

    什么是PHP的MySQLi扩展? PHP的MySQLi扩展又被称为MySQL增强扩展,mysqli扩展在PHP 5...

  • iOS 面向对象及继承

    1. 面向对象 它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工...

  • node mysql 多条语句执行

    执行多条查询语句 为了安全起见,默认情况下是不允许执行多条查询语句的。要使用多条查询语句的功能,就需要在创建数据库...

  • mysqli操作数据库

    mysqli 操作数据库 从PHP5.0开始可以使用MySQLi,是一种面向对象的技术(以后新加功能都会以对象形式...

  • [Python] (Day-10) - 条件判断和循环语句

    条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码 if 语句...

网友评论

      本文标题:MySQLi扩展面向对象:multi_query()执行多条语句

      本文链接:https://www.haomeiwen.com/subject/vkqseltx.html