Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie rufe ich gespeicherte MySQL-Prozeduren mit Eingabe- und Ausgabeparametern in PHP auf?

Susan Sarandon
Freigeben: 2024-11-07 00:26:02
Original
537 Leute haben es durchsucht

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

Aufrufen gespeicherter MySQL-Prozeduren mit Eingabe- und Ausgabeparametern in PHP

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.

Die Herausforderung der MySQLi-Schnittstelle

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.

Prozeduraler Ansatz

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'];
Nach dem Login kopieren

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

Object- Orientierter Ansatz

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'];
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage