Tach!
$stmt = $mysqli->prepare("SELECT * FROM users WHERE user_session=?");
# $stmt->bindParam("s", session_id());
$stmt->execute(session_id());
Versuche es mal so, wie oben angedeutet.
Was soll denn das werden? mysqli_stmt::execute() nimmt keine Parameter entgegen.
Und da fällt mir noch was auf: bindParam ist PDO-Syntax, bei mysqli heißt diese Methode bind_param.
Welchen Parameter s wolltest Du denn überhaupt binden? ich sehe im Statement-Text überhaupt keinen.
Handbuch lesen! Das s steht für den Typ String. Es soll also ein String-Wert gebunden werden. Das ist kein Platzhaltername. Solche gibt es in MySQL nicht, nur positionsorientierte Fragezeichen.
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!
Das wird dann der nächste Fehler werden, wenn der eigentlich angefragte beseitigt worden ist. Beim Binding von Parameteren und auch von Abfrageresultaten (bind_result) können nur Variablen angegeben werden, keine Funktionsaufrufe oder andere zu berechnende Ausdrücke.
dedlfix.