Hello,
ich habekomme wieder ein Fehler angezeigt und sehe den Fehler in meiner Funktion nicht. Mein Login sieht wie folgt aus
function isUserLoggedIn($mysqli) {
$stmt = $mysqli->prepare("SELECT * FROM users WHERE user_session=?");
# $stmt->bindParam("s", session_id());
$stmt->execute(session_id());
if($stmt->rowCount() === 1) {
return true;
} else {
return false;
}
}
Versuche es mal so, wie oben angedeutet.
Welchen Parameter s wolltest Du denn überhaupt binden? ich sehe im Statement-Text überhaupt keinen.
Fatal error: Call to a member function bindParam() on a non-object in Zeile 28. Die Zeile ist
$stmt->bindParam("s", session_id());
die session_id ist doch ein String oder?
Aber selbst, wenn da ein Parameter s im SQL-Text notiert wäre, würde er sich vermutlich nicht an das Ergebnis der Funktion binden lassen.
Hier müssen wir ein wenig pingeliger mit der Sprache umgehen: Die FUNKTION session_id() LIEFERET einen String mit der Session-ID, aber erst dannw, wenn sie aufgerufen wird.
Die Methode bindParam() verlangt aber eine VARIABLE, an die der Parameter gebunden wird. Die muss in dem Moment, wo sie gebunden wird, bereits vorhanden sein!
also "s" oder kann es sein, dass die Funktion mal wieder den Wert session_id() nicht kennt?
So ungefähr. Der WERT ist dabei sogar noch relativ egal, aber bindParam() kennt noch nicht einmal den Speicherplatz, in den der Wert gespeichert werden soll.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg