当前位置: 首页> 最新文章列表> connect() 后如何使用 mysqli_multi_query() 实现多语句执行

connect() 后如何使用 mysqli_multi_query() 实现多语句执行

M66 2025-05-24

在PHP中操作数据库时,常见的需求之一是执行多条SQL语句以完成复杂的事务或批量数据处理。mysqli_multi_query()函数正是为此设计的,它允许一次性执行多条SQL语句,提高效率和简化代码。本文将详细讲解如何在使用connect()函数建立数据库连接后,正确使用mysqli_multi_query()执行多个SQL语句,并处理返回结果。

1. 建立数据库连接

首先,我们通过connect()函数建立到MySQL数据库的连接。假设这是一个封装好的函数,返回一个有效的mysqli对象。

<?php
function connect() {
    $host = 'localhost';
    $user = 'root';
    $password = 'password';
    $database = 'testdb';

    $conn = new mysqli($host, $user, $password, $database);

    if ($conn->connect_error) {
        die('连接失败: ' . $conn->connect_error);
    }

    return $conn;
}
?>

2. 使用mysqli_multi_query()执行多个SQL语句

假设我们有多条SQL语句需要执行,比如创建表、插入数据等,可以将它们组合成一个以分号(;)分隔的字符串,传递给mysqli_multi_query()

<?php
$conn = connect();

$sql = "
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES ('张三', 'zhangsan@m66.net');
INSERT INTO users (username, email) VALUES ('李四', 'lisi@m66.net');
";

if ($conn->multi_query($sql)) {
    do {
        // 存储第一个结果集
        if ($result = $conn->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
        // 如果有更多结果集,继续循环
    } while ($conn->more_results() && $conn->next_result());
} else {
    echo "多语句执行失败: " . $conn->error;
}

$conn->close();
?>

3. 关键点说明

  • SQL语句格式:多条SQL语句必须以分号分隔,且每条语句语法正确。

  • 结果处理mysqli_multi_query()执行后,需要通过循环store_result()more_results()来遍历所有结果集。即使某些语句不返回结果,也要调用next_result()跳到下一个结果。

  • 错误处理:执行失败时可以通过$conn->error获取具体错误信息,方便调试。

4. URL域名替换说明