韶华小苑 |

时光不负终不老

您现在的位置是: 首页 > 文章 >

php mysql_query()与mysqli_multi_query()区别

php mysql_query()与mysqli_multi_query()区别

大帅哥 2020-10-09 暂无评论 暂无分类 4

刚学php的时候,基本上都是使用 mysql_query() 函数的,
等到工作了,才知道简单的一个 mysql_query() 是不够的,
于是就翻阅资料,找到了这个函数 —— mysqli_multi_query()

mysqli_multi_query() 函数

mysql_query() 函数不一样,这个函数被允许执行多条sql语句,
当我们在进行代码优化的时候(譬如多条循环产生的更新语句时)就可以使用这个函数

它跟 mysql_query() 一样,需求两个参数,

  1. 连接标识: $link_id
  2. sql语句: $sql,以 ; 分割。

与 mysql_query() 区别

注意,当sql执行成功后, mysqli_multi_query() 函数返回 bool(true)

执行失败时,返回 bool(false)


需要取得结果集的话,必须使用另一个函数:

mysqli_store_result() 来获取 第一个 结果集,

返回值跟 mysql_query() 函数的返回值一样,均返回资源变量,需要再次转换

要获取下一个结果集的话,需要使用 mysqli_next_result() 函数。

我的理解是,使用这个函数将指针下移,

然后就可以再次使用 mysqli_store_result() 来获取下一个结果集了。

拆箱即用代码

下面是我封装好的一个方法,欢迎取用。

// 执行sql语句(可执行多条语句)
function queryExec($link, $sql)
{
    // 多条sql语句也可以执行
    $result = mysqli_multi_query($link, $sql);
    if (!$result) return 'sql语句执行错误,检查语法情况!';

    $res = [];
    while (true) {
        // 获取多查询结果集
        $result = mysqli_store_result($link);
        if (!$result) break;
        $res[] = $result;

        if (!mysqli_more_results($link)) break;
        mysqli_next_result($link);
        continue;
    }
    if (empty($res)) return false;

    // 单查询则返回当前对象即可
    if (count($res) == 1) return array_pop($res);

    // 多查询返回数组对象
    return $res;
}

代码解释

  1. 此函数调用时需要先进行数据库连接
  2. 可传入单条sql语句,返回的是查询的记录集 -> 对象
  3. 传入多条sql时,需要以 ; 分割多条sql语句
  4. 传入多条sql时,返回的是多条语句执行后的记录集数组 -> 对象数组

以上均为我个人理解,
有不正确的地方,欢迎各位指正,拜谢

本文链接: https://hw13.cn/d98194259a99467f40737379983f0ca7.html 最后修改时间: 2020-10-09 00:23:25

瞅我来气不?用红包砸死我吧

赞赏作者
扫一扫支付