Heim >Datenbank >MySQL-Tutorial >Wie kann ich in PHP eine gespeicherte MySQL-Prozedur mit Eingabe- und Ausgabeparametern aufrufen?

Wie kann ich in PHP eine gespeicherte MySQL-Prozedur mit Eingabe- und Ausgabeparametern aufrufen?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 02:13:01547Durchsuche

How can I call a MySQL Stored Procedure with Both Input and Output Parameters in PHP?

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

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!

Stellungnahme:
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