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

MySQL 5 存儲過程快速入門:創建、調用與 PHP mysqli 多結果集處理

     編輯:MySQL 資料庫相關知識

客戶端操作流程


# 1. 登入
mysql -u user -p

# 2. 選庫
mysql> USE test;

# 3. 查看現有存儲過程
mysql> SHOW PROCEDURE STATUS WHERE Db='test';

# 4. 創建簡單存儲過程
mysql> CREATE PROCEDURE hi() SELECT 'hello';

# 5. 調用
mysql> CALL hi();
+-------+
| hello |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

進階特性與 PHP 應用

  • 一次調用執行多條 SQL:減少網絡往返,提升性能
  • 多結果集返回:必須使用 PHP mysqli 擴展,舊 mysql 擴展不支持,會報錯 can't return a result set in the given context

mysqli 多結果集處理示例


$mysqli = new mysqli("localhost", "user", "pass", "db");

# 調用返回多結果集的存儲過程
if ($mysqli->multi_query("CALL multi_result_proc()")) {
    do {
        if ($result = $mysqli->store_result()) {
            # 處理當前結果集
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
        # 檢查是否有下一結果集
        if ($mysqli->more_results()) {
            echo "--- Next Result Set ---\n";
        }
    } while ($mysqli->next_result());
}
$mysqli->close();

關鍵遷移建議

  1. 新項目直接使用 mysqli 或 PDO_MySQL,棄用舊 mysql 擴展(PHP 7.0+ 已移除)。
  2. 存儲過程中涉及多 SELECT、SHOW、EXPLAIN 等返回結果集的語句時,客戶端必須用 multi_query/next_result 循環獲取。
  3. 預處理語句 mysqli::prepare 結合存儲過程調用可防注入、提升重複執行性能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved