piepmatz
Goto Top

MYSQL stored procedure in PHP aufrufen

Wie kann ich in PHP eine stored procedure aufrufen die einen Rückgabewert liefert?

Hallo zusammen,

Trotz googlen konnte ich bisher keine zufriedenstellende Antwort finden.

Ich habe eine stored procedure in MYSQL:

USE testusr_maindb;

DELIMITER
DROP PROCEDURE IF EXISTS testsp

CREATE PROCEDURE testsp (uname VARCHAR(20), upwd CHAR(40), OUT isvalid INT)


Wenn ich die SP in der MYSQL Console aufrufe mit:

call testsp ('testuser', 'testpw', @a);

steht der Rückgabewert in @a. Was heisst, die SP funktioniert korrekt.

Genau diesen Rückgabewert möchte ich jetzt in PHP weiter verarbeiten.
Leider komm ich nicht drauf wie ich aus PHP die SP aufrufen muss.
Besten Dank für eure Untersützung.

Content-Key: 83744

Url: https://administrator.de/contentid/83744

Printed on: April 18, 2024 at 07:04 o'clock

Member: filippg
filippg Mar 23, 2008 at 16:23:16 (UTC)
Goto Top
Hallo,

ich habe Stored Procedures nur mit dem MS SQL-Server genutzt. Hier gibt es den Befehl mssql_bind, mit dem man Parameter an die SP übergeben kann. Dabei kann man auch Ausgabeparameter festlegen. Für MySQL gibt es kein gleichnamiges Pendant. Liegt evtl. daran, dass MySQL Stored Procedures noch nicht so sehr lange kann.
Aber einen Tip, wie du herausfinden kannst wie es geht habe ich: phpMySQLAdmin ist ja in PHP geschrieben und die Quelltexte sollten dir ja vorliegen. Also wirf da doch mal einen Blick rein, wie das da gemacht wird.
Das Ergebnis würde mich auch interessieren.

Gruß

Filipp
Member: piepmatz
piepmatz Mar 23, 2008 at 18:45:42 (UTC)
Goto Top
Hallo,

danke erstmal für den Tipp. Leider konnte auch aus dem aktuellen PHPMYADMIN Quelltext die gewünschte Information nicht finden.
Bisher habe ich nur rausgefunden dass es im PHP die Erweiterung mysqli braucht.
Als Notlösung führe ich die SP jetzt einfach aus:

call testsp ('testuser', 'testpw', @a);

Anschliessend hole ich den Wert mit:

$sqlquery = "select @a;";
...

Nicht schön. Aber scheit zu klappen. Sollte ich die Lösung noch finden werde ich diese natürlich hier bekannt geben.
Für weitere Tipps bin ich dankbar.