我想從 PHP 呼叫 MySQL 中的預存程序。過程採用輸入和輸出參數-不是“INOUT”參數。
舉一個簡單的例子,假設我在 MySQL 中有以下預存程序:
DELIMITER $$ DROP PROCEDURE IF EXISTS `test_proc`$$ CREATE PROCEDURE `test_proc`( in input_param_1 int, in input_param_2 int, in input_param_3 int, out output_sum int, out output_product int, out output_average int ) BEGIN set output_sum = input_param_1 + input_param_2 + input_param_3; set output_product = input_param_1 * input_param_2 * input_param_3; set output_average = (input_param_1 + input_param_2 + input_param_3) / 3; END$$ DELIMITER ;
現在,從PHP 腳本/頁面方面,假設我有以下變數(我們將其稱為“proc 輸入變數”),我想將它們作為輸入參數提供給儲存過程當我調用它時:
$procInput1 = "123"; $procInput2 = "456"; $procInput3 = "789";
假設在PHP 腳本/頁面端,我還有以下變數(我們稱之為“proc 輸出變數”),我想將它們作為輸出參數提供給預存程序當我調用它時,由預存程序設定:
$procOutput_sum; $procOutput_product; $procOutput_average;
所以,本質上,在 PHP 腳本/頁面方面,我想要做的,本質上(我意識到以下程式碼無效),是...< /p>
call test_proc($procInput1, $procInput2, $procInput3, $procOutput_sum, $procOutput_product, $procOutput_average);
...一旦調用,就會出現以下 PHP 程式碼...
echo "Sum: ".$procOutput_sum; echo "Product: ".$procOutput_product; echo "Average: ".$procOutput_average;
...應該產生以下輸出:
Sum: 1368 Product: 44253432 Average: 456
要注意的是,如果可能的話,我希望能夠使用 MySQLi 過程函數/介面來完成此操作。如果不可能,那麼我將使用讓它工作的方法。
我已經編程有一段時間了,但 PHP 語言對我來說是一個相對較新的嘗試。我發現了大量關於從 PHP 呼叫 MySQL 預存程序的教學課程。有些是使用輸入參數呼叫預存程序的教學課程,有些則是使用輸出參數呼叫預存程序的教學課程,有些則是使用inout<调用存储过程的教程/strong> 參數。我還沒有找到任何關於呼叫同時同時輸入和輸出參數的預存程序的教學或範例,而具體不使用「輸入輸出」參數。我無法弄清楚如何對參數綁定進行編碼(例如:mysqli_stmt_bind_param 和 mysqli_stmt_bind_result)並使其正常工作。
任何幫助將不勝感激,我提前致謝!
不幸的是,MySQLi 沒有對輸出預存程序參數的任何本機支援;必須改為輸出到MySQL 用戶變數,然後使用單獨的
SELECT 取得值
聲明。使用程式介面:
或者,使用物件導向的介面: