Heim >Datenbank >MySQL-Tutorial >Wie kann ich in PHP eine gespeicherte MySQL-Prozedur mit Eingabe- und Ausgabeparametern aufrufen?
Wenn Sie eine gespeicherte Prozedur in MySQL aufrufen, die sowohl Eingabe- als auch Ausgabeparameter erfordert (ausgenommen INOUT-Parameter), Es ist wichtig, die Nuancen der Verbindungs- und Anweisungsschnittstellen von PHP zu verstehen.
Einrichtung der Prozedur
Betrachten Sie die folgende gespeicherte MySQL-Prozedur, die Eingabeparameter entgegennimmt und Ausgabewerte berechnet:
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 ;
PHP-Verbindung und -Anweisung
Um diese Prozedur aufzurufen, können Sie entweder die prozedurale oder die objektorientierte Schnittstelle für MySQLi verwenden.
Prozedurale Schnittstelle:
$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);
Objektorientierte Schnittstelle:
$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();
Parameterbindung
Für beide Schnittstellen ist der Schritt der Parameterbindung von entscheidender Bedeutung. Eingabeparameter werden normalerweise mit „i“ für Ganzzahlen gebunden, und Ausgabeparameter werden mit „@“ gefolgt vom Parameternamen gebunden.
Ausgabeabruf
Nach der Ausführung von CALL-Anweisung wird eine separate SELECT-Anweisung ausgeführt, um die Werte aus den MySQL-Benutzervariablen (@sum, @product, @average) abzurufen, die von der gespeicherten Prozedur aufgefüllt wurden.
Fazit
Während MySQLi die direkte Bindung von Ausgabeparametern nicht nativ unterstützt, ermöglicht die Verwendung von Benutzervariablen und einer nachfolgenden SELECT-Anweisung Entwicklern die Arbeit mit Prozeduren, die sowohl Eingabe- als auch Ausgabeparameter erfordern.
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP eine gespeicherte MySQL-Prozedur mit Eingabe- und Ausgabeparametern aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!