在MySQL 中呼叫同時需要輸入和輸出參數(不包括INOUT 參數)的預存程序時,了解PHP 連接和語句介面的細微差別至關重要。
過程設定
考慮以下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 連接和語句
要呼叫此過程,您可以使用MySQLi的面向過程介面或物件導向介面。
流程介面:
$mysqli = mysqli_connect(); $call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)'); mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3); mysqli_stmt_execute($call); $select = mysqli_query($mysqli, 'SELECT @sum, @product, @average'); $result = mysqli_fetch_assoc($select);
物件導向介面:
$mysqli = new mysqli(); $call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)'); $call->bind_param('iii', $procInput1, $procInput2, $procInput3); $call->execute(); $select = $mysqli->query('SELECT @sum, @product, @average'); $result = $select->fetch_assoc();
參數綁定
參數綁定對於這兩個接口,參數綁定步驟至關重要。輸入參數通常使用“i”表示整數,輸出參數使用“@”後跟參數名稱進行綁定。輸出檢索
執行後CALL 語句,執行單獨的SELECT 語句以從預存程序填入的MySQL 使用者變數(@sum、@product、@average)中檢索值。結論
雖然 MySQLi 本身不支援直接輸出參數綁定,但使用使用者變數和後續 SELECT 語句允許開發人員處理需要輸入和輸出參數的過程。
以上是如何在 PHP 中呼叫具有輸入和輸出參數的 MySQL 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!