MySQL Stored Procedure ohne Rückgabewerte
am 20.12.2007 10:54:09 von jan.claussMoin...
Ich versuche gerade eine "Stored Procedure" von Mysql 5.0 mit PHP
aufzurufen.
Procedure liefert keine Rückgabewerte.
nach Versuchen mit der normalen mysql_query-Funktion und dem wohl
typischen Fehler "can't return a result set in the given context" habe
ich den Aufruf auf mysqli und multiquery umgestellt.
selbiges beschwert sich, weil es keine Parameter zurückbekommt.
So habe ich sie so umgestellt, das sie aus drei Abfragen besteht und
Werte zurückliefert:
$mysqli = new mysqli($database_host);
$sql="
SET @ur=$userrights;
CALL
$database_menu_name.mn_log(@ur,'$framepath','$_SERVER[REMOTE _ADDR]');
SELECT @ur;";
$result=$mysqli->multi_query($sql);
Jetzt bekomme ich keinen Fehler mehr, aber die Procedure ändert auch
nichts mehr an der Datenbank :-(
Direkt in MySQL aufgerufen macht sie selbiges aber.
Hier noch die Procedure:
CREATE PROCEDURE `mn_log`(OUT userrights int, seite varchar(255), ip
varchar(20))
BEGIN
SELECT id FROM mn_menu WHERE pfad=seite;
IF FOUND_ROWS()>0 THEN
if (ip LIKE '192.168.1%') THEN
if userrights>0 THEN
UPDATE mn_menu SET int_ok:=int_ok+1 WHERE pfad=seite;
ELSE
UPDATE mn_menu SET int_sperr:=int_sperr+1 WHERE pfad=seite;
END IF;
ELSE
if userrights>0 THEN
UPDATE mn_menu SET ok:=ok+1 WHERE pfad=seite;
ELSE
UPDATE mn_menu SET sperr:=sperr+1 WHERE pfad=seite;
END IF;
END IF;
END IF;
END;
Vielen Dank für Eure Ideen und Lösungen ;-)