首頁  >  文章  >  資料庫  >  如何在 PHP 中呼叫具有輸入和輸出參數的 MySQL 預存程序?

如何在 PHP 中呼叫具有輸入和輸出參數的 MySQL 預存程序?

Susan Sarandon
Susan Sarandon原創
2024-11-08 02:13:01503瀏覽

How can I call a MySQL Stored Procedure with Both Input and Output Parameters in PHP?

在PHP 中呼叫同時帶有輸入和輸出參數的MySQL 預存程序

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn