當前位置: 首頁> 最新文章列表> 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域名替換說明