Memanggil Prosedur Tersimpan MySQL dengan Kedua-dua Parameter Input dan Output dalam PHP
Apabila bekerja dengan prosedur tersimpan MySQL, selalunya perlu untuk memasukkan dan mendapatkan semula data daripada pangkalan data. Di sinilah parameter input dan output dimainkan. Walau bagaimanapun, ia boleh mencabar untuk menggunakan kedua-dua parameter input dan output, terutamanya tanpa menggunakan parameter "INOUT".
Memahami Parameter Input dan Output Prosedur
Mari kita pertimbangkan contoh prosedur tersimpan dalam pangkalan data MySQL:
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 )
Prosedur ini menjangkakan tiga parameter input (input_param_1, input_param_2, input_param_3) dan tiga parameter output (output_sum, output_product, output_average). Parameter input digunakan untuk mengira parameter output.
Mengikat Parameter Input dan Output Menggunakan MySQLi
Untuk memanggil prosedur tersimpan ini daripada PHP menggunakan MySQLi, anda perlu untuk mengikat kedua-dua parameter input dan output. Dalam kod berikut, kami menggunakan antara muka prosedur untuk mewujudkan sambungan, menyediakan panggilan prosedur yang disimpan, mengikat parameter input, melaksanakan panggilan dan mendapatkan semula parameter output daripada pembolehubah pengguna:
<?php $procInput1 = 123; $procInput2 = 456; $procInput3 = 789; $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); $procOutput_sum = $result['@sum']; $procOutput_product = $result['@product']; $procOutput_average = $result['@average']; mysqli_stmt_close($call); mysqli_close($mysqli); ?>
Dalam kod di atas, fungsi mysqli_prepare menyediakan panggilan prosedur tersimpan. Fungsi mysqli_stmt_bind_param mengikat parameter input kepada panggilan. Fungsi mysqli_stmt_execute melaksanakan panggilan.
Selepas melaksanakan prosedur tersimpan, kita perlu mendapatkan semula parameter output daripada pembolehubah pengguna menggunakan pernyataan SELECT yang berasingan. Ini kerana MySQLi tidak mempunyai sokongan asli untuk mendapatkan semula parameter output secara langsung.
Kesimpulan
Dengan memahami cara mengikat kedua-dua parameter input dan output dalam prosedur disimpan MySQL menggunakan MySQLi, anda boleh berinteraksi secara berkesan dengan pangkalan data anda dan mendapatkan semula data yang diperlukan untuk aplikasi PHP anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Parameter Output dari Prosedur Tersimpan MySQL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!