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

Susan Sarandon
Lepaskan: 2024-11-07 00:26:02
asal
467 orang telah melayarinya

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'];
Salin selepas log masuk

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'];
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!