首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP mysqli 多查詢特性實現批量 SQL 執行

     編輯:MySQL 資料庫相關知識

multi_query 核心用法

mysqli 支援單次調用執行多條 SQL,語句間必須用分號分隔。

<?php
$mysqli = new mysqli("localhost", "root", "", "new");
$mysqli->query("SET NAMES 'utf8'");

$sql = "SELECT id, name FROM `user`;";
$sql .= "SELECT id, mail FROM `user`";

if ($mysqli->multi_query($sql)) {
    do {
        if ($rs = $mysqli->store_result()) {
            while ($row = $rs->fetch_row()) {
                var_dump($row);
                echo "<br>";
            }
            $rs->close();
        }
        if ($mysqli->more_results()) {
            echo "<hr>";
        }
    } while ($mysqli->next_result());
}
$mysqli->close();
?>

關鍵方法流程解析

  1. multi_query($sql):發送多條 SQL,返回 bool
  2. store_result():獲取當前結果集(緩衝模式)
  3. fetch_row():逐行讀取結果
  4. more_results():判斷是否還有後續結果集
  5. next_result():移動到下一結果集,返回 bool

常見坑點提醒

  • ❌ SQL 語句未以分號結尾 → 語法錯誤
  • ❌ 忘記調用 next_result() → 只能讀第一個結果集
  • ❌ 大結果集用 store_result() 佔用大量內存 → 考慮 use_result() 流式讀取
  • ❌ 混合 DML/DDL 導致隱式提交 → 事務邊界混亂

適用場景

  • 批量初始化腳本執行
  • 減少網絡往返的多表關聯查詢
  • 存儲過程返回多結果集

配合預處理使用可進一步提升批量操作性能與安全性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved