Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh memanggil Prosedur Tersimpan MySQL dengan Kedua-dua Parameter Input dan Output dalam PHP?

Bagaimanakah saya boleh memanggil Prosedur Tersimpan MySQL dengan Kedua-dua Parameter Input dan Output dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-08 02:13:01552semak imbas

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

Memanggil Prosedur Tersimpan MySQL dengan Kedua-dua Parameter Input dan Output dalam PHP

Apabila memanggil prosedur tersimpan dalam MySQL yang memerlukan kedua-dua parameter input dan output (tidak termasuk parameter INOUT), adalah penting untuk memahami nuansa sambungan PHP dan antara muka pernyataan.

Penyediaan Prosedur

Pertimbangkan prosedur tersimpan MySQL berikut, yang mengambil parameter input dan mengira nilai output:

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 ;

Sambungan dan Pernyataan PHP

Untuk memanggil prosedur ini, anda boleh menggunakan sama ada antara muka prosedur atau berorientasikan objek untuk MySQLi.

Antara Muka Prosedur:

$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);

Antara Muka Berorientasikan Objek:

$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();

Pengikatan Parameter

Untuk kedua-dua antara muka, langkah mengikat parameter adalah penting. Parameter input biasanya diikat dengan 'i' untuk integer, dan parameter output diikat menggunakan '@' diikuti dengan nama parameter.

Output Retrieval

Selepas melaksanakan Kenyataan CALL, pernyataan SELECT yang berasingan dilaksanakan untuk mendapatkan semula nilai daripada pembolehubah pengguna MySQL (@sum, @product, @average) yang diisi oleh prosedur tersimpan.

Kesimpulan

Walaupun MySQLi tidak menyokong pengikatan parameter output langsung secara asli, menggunakan pembolehubah pengguna dan pernyataan SELECT seterusnya membolehkan pembangun bekerja dengan prosedur yang memerlukan kedua-dua parameter input dan output.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memanggil Prosedur Tersimpan MySQL dengan Kedua-dua Parameter Input dan Output dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn