Entwickler stehen häufig vor der Notwendigkeit, gespeicherte Prozeduren aus PHP-Skripten aufzurufen. Gespeicherte Prozeduren können eine Kombination aus Eingabe- und Ausgabeparametern annehmen, wobei Eingabeparameter Werte für die Prozedur bereitstellen und Ausgabeparameter berechnete Werte von der Prozedur empfangen. Dieser Artikel konzentriert sich auf den Aufruf gespeicherter MySQL-Prozeduren, die speziell sowohl Eingabe- als auch Ausgabeparameter annehmen, mit Ausnahme von „Inout“-Parametern.
Leider sind die prozeduralen und objektorientierten Schnittstellen von MySQLi Es fehlt die native Unterstützung für Ausgabeparameter für gespeicherte Prozeduren. Um dieses Problem zu umgehen, kann man MySQL-Benutzervariablen verwenden, um Ausgabewerte zu empfangen und sie mit einer separaten SELECT-Anweisung abzurufen. Durch die Implementierung von Benutzervariablen und SELECT-Anweisungen ist es möglich, gespeicherte Prozeduren effektiv mit Eingabe- und Ausgabeparametern zu verarbeiten.
Betrachten Sie den folgenden PHP-Code unter Verwendung der prozeduralen MySQLi-Schnittstelle:
$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'];
In diesem Beispiel werden MySQL-Benutzervariablen (@sum, @product, @average) in der gespeicherten Prozedur definiert. Der Aufruf von mysqli_query("SELECT @sum, @product, @average") ruft die von der gespeicherten Prozedur festgelegten Werte ab und weist sie PHP-Variablen zu ($procOutput_sum, $procOutput_product, $procOutput_average).
Alternativ kann die objektorientierte MySQLi-Schnittstelle verwendet werden:
$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'];
Der objektorientierte Ansatz folgt einem ähnlichen Muster und verwendet die Funktionen „prepare()“, „bind_param()“ und „execute“. () und query()-Methoden zum Aufrufen der gespeicherten Prozedur und zum Abrufen der Ausgabewerte über Benutzervariablen.
Durch die Nutzung von MySQL-Benutzervariablen und SELECT-Anweisungen können PHP-Entwickler effektiv gespeicherte Prozeduren aufrufen, die sowohl Eingabe als auch Ausgabe erfordern Parameter. Diese Technik bietet eine Problemumgehung für die fehlende Unterstützung nativer Ausgabeparameter in der MySQLi-Schnittstelle.
Das obige ist der detaillierte Inhalt vonWie rufe ich gespeicherte MySQL-Prozeduren mit Eingabe- und Ausgabeparametern in PHP auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!