PHP Zweites $mysqli->query liefert bei stored procedure immer false

D

derBobby

Gast
Hallo zusammen!

Kann mir jemand helfen den Fehler zu finden? Ich führe zwei Mal hintereinander eine Stored Procedure aus. Das erste Mal funktioniert es so, das zweite Mal funktioniert es nicht. Wenn ich statt dem CALL eine SELECT Anweisung versuche, dann funktioniert diese! :(



PHP:
            $mysqli = new mysqli('localhost', 'studienarbeit', 'studienarbeit', 'studienarbeit');
         
            $erg = $mysqli->query('CALL getUser("email@domain.de");');
            if($erg !== false){
                echo 'ok<br />';
                $erg->free();
            } else {
                echo 'fail<br />';
            }
                        
            $erg = $mysqli->query('CALL getUser("email@domain.de");');
            if($erg !== false){
                echo 'ok<br />';
                $erg->free();
            } else {
                echo 'fail<br />';
            }

Komplette SP:
Code:
DELIMITER $$

CREATE PROCEDURE getUser (IN user VARCHAR(45))
BEGIN
    SELECT salz, passwort, rechte, restversuche, zuletztgesehen
    FROM benutzer
    WHERE user = email;
END
 
"geht" und "geht nicht" sind im seltensten Fall Fehlerbeschreibungen, die zu einer Lösung führen ;)

Springt er wenigstens in den else-Zweig weil Result false ist?
Dort könntest du dir zumindest den mysql_error() (oder über das mysqli Object) abholen und hier angeben.
 
Ja, er springt in den Else-Teil. Danke für den Hinweis mit dem Error. Gar nicht dran gedacht. Der gibt die Nachricht unten her, die mich aber nicht weiter bringt.

"Commands out of sync; you can't run this command now"
 
Nicht wirklich, das sind ja Hinweise für den prozeduralen Stil, oder nicht? Wie mache ich es denn objektorientiert?
 
Steht doch im Prinzip da, was benötigt wird und warum das nicht funktioniert: mysql_free_result(). Ruf mal fetch() bzw. hier eher close() beim Query auf, dann sollte auch der zweite Query wunderbar funktionieren. Das gleiche "Problem" hast du übrigens auch bei der Arbeit mit PDO.
 
An der Stelle, an der free() aufgerufen wird da habe ich es mit close() versucht. Gleiches ergebnis! :(
 

Ähnliche Themen

O
2
Antworten
20
Aufrufe
2.988
omaliesschen
O
Antworten
11
Aufrufe
1.911
Zurück
Oben