一、MySQL預存程序
預存程序是一組預先編譯的SQL語句,用來實作特定的業務邏輯。相對於在應用層編寫類似的業務邏輯,使用預存程序可以將這些邏輯移至資料庫層面,節省了網路傳輸的時間,提高了效能。以下是一段簡單的MySQL預存程序:
CREATE PROCEDURE `my_proc`(IN `p_id` INT, OUT `p_name` VARCHAR(20)) BEGIN SELECT `name` INTO `p_name` FROM `users` WHERE `id` = `p_id`; END
這段預存程序接受一個整數參數p_id
,並將對應使用者的姓名賦值給p_name
輸出參數。在應用層呼叫該預存程序時,只需要傳遞參數p_id
,即可取得對應使用者的姓名。使用預存程序的好處在於,下次呼叫該預存程序時,MySQL引擎已經將該程序編譯為機器碼,無需再次解析SQL語句,因此執行效率更高。
二、PHP呼叫MySQL預存程序
在PHP開發中,使用預存程序可以大幅減少資料庫操作的時間。以下是呼叫上述MySQL預存程序的PHP程式碼:
<?php // 连接MySQL数据库 $db = new mysqli('localhost', 'user', 'password', 'test'); if ($db->connect_errno) { die('Connect Error:' . $db->connect_error); } // 准备存储过程的参数和调用语句 $id = 1; $p_name = ''; $sql = "CALL my_proc($id, @p_name)"; // 执行调用语句 if ($db->multi_query($sql)) { // 获取输出参数 $db->next_result(); $result = $db->query("SELECT @p_name AS `name`"); $row = $result->fetch_assoc(); $p_name = $row['name']; // 输出查询结果 echo "User $id's name is $p_name"; } else { echo "Call Procedure Error:" . $db->error; } // 关闭数据库连接 $db->close(); ?>
在這段PHP程式碼中,先連接MySQL資料庫,接著準備預存程序的輸入參數和呼叫語句。由於呼叫預存程序產生的查詢結果是透過OUT參數輸出的,因此需要執行多個SQL語句才能取得查詢結果:先執行呼叫語句,接著執行SELECT語句,最後取得輸出參數p_name
。呼叫結束後,關閉資料庫連線即可。
以上是php+mysql如何使用預存程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!