Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memanggil Prosedur Tersimpan MySQL dengan Parameter Input dan Output dalam PHP?

Bagaimana untuk Memanggil Prosedur Tersimpan MySQL dengan Parameter Input dan Output dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-07 00:26:02469semak imbas

How to Call MySQL Stored Procedures with Input and Output Parameters in PHP?

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

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".

Cabaran Antara Muka MySQLi

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.

Pendekatan Prosedur

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).

Object- Pendekatan Berorientasikan

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!

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