Pembangun sering menghadapi keperluan untuk memanggil prosedur tersimpan daripada skrip PHP. Prosedur tersimpan boleh mengambil gabungan parameter input dan output, dengan parameter input memberikan nilai kepada prosedur dan parameter output menerima nilai yang dikira daripada prosedur. Artikel ini menumpukan pada memanggil prosedur tersimpan MySQL yang secara khusus mengambil kedua-dua parameter input dan output, tidak termasuk parameter "inout".
Malangnya, antara muka prosedur dan berorientasikan objek MySQLi kekurangan sokongan asli untuk parameter prosedur tersimpan output. Sebagai penyelesaian, seseorang boleh menggunakan pembolehubah pengguna MySQL untuk menerima nilai output dan mendapatkannya menggunakan pernyataan SELECT yang berasingan. Dengan melaksanakan pembolehubah pengguna dan pernyataan SELECT, adalah mungkin untuk mengendalikan prosedur tersimpan dengan kedua-dua parameter input dan output dengan berkesan.
Pertimbangkan kod PHP berikut menggunakan antara muka MySQLi prosedur:
$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'];
Dalam contoh ini, pembolehubah pengguna MySQL (@jumlah, @produk, @purata) ditakrifkan dalam prosedur tersimpan. Panggilan ke mysqli_query("SELECT @sum, @product, @average") mendapatkan semula nilai yang ditetapkan oleh prosedur tersimpan dan memberikannya kepada pembolehubah PHP ($procOutput_sum, $procOutput_product, $procOutput_average).
Sebagai alternatif, antara muka MySQLi berorientasikan objek boleh digunakan:
$procInput1 = 123; $procInput2 = 456; $procInput3 = 789; $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(); $procOutput_sum = $result['@sum']; $procOutput_product = $result['@product']; $procOutput_average = $result['@average'];
Pendekatan berorientasikan objek mengikut corak yang sama, menggunakan prepare(), bind_param(), laksana (), dan kaedah query() untuk memanggil prosedur tersimpan dan mendapatkan semula nilai output melalui pembolehubah pengguna.
Dengan memanfaatkan pembolehubah pengguna MySQL dan pernyataan SELECT, pembangun PHP boleh memanggil prosedur tersimpan dengan berkesan yang memerlukan kedua-dua input dan output parameter. Teknik ini menyediakan penyelesaian untuk kekurangan sokongan parameter output asli dalam antara muka MySQLi.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Prosedur Tersimpan MySQL dengan Parameter Input dan Output dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!