$stmt->num_rows
Achot
- php
1 dedlfix
Hallo,
ich habe eine Frage zu $stmt->num_rows
$stmt = $mysqli->prepare("SELECT titel, userID, von, bis, code, name, vorname FROM bilder
LEFT JOIN user ON user.code = bilder.userID
WHERE titel =? AND von =? AND bis =?");
$stmt->bind_param("sss", $titel, $von, $bis);
$stmt->execute();
$stmt->store_result();
$stmt->num_rows;
$stmt->bind_result($status, $titel, $userID, $von, $bis, $code, $name, $vorname);
$stmt->fetch();
$stmt->close();
echo $stmt->num_rows;
Mit dem oben genannten Code erhalte ich keine echo Ausgabe. Ändere ich den Code wie folgt ab, erhalte ich eine Ausgabe, warum den Umweg über eine Variable?
$stmt = $mysqli->prepare("SELECT titel, userID, von, bis, code, name, vorname FROM bilder
LEFT JOIN user ON user.code = bilder.userID
WHERE titel =? AND von =? AND bis =?");
$stmt->bind_param("sss", $titel, $von, $bis);
$stmt->execute();
$stmt->store_result();
$test = $stmt->num_rows;
$stmt->bind_result($status, $titel, $userID, $von, $bis, $code, $name, $vorname);
$stmt->fetch();
$stmt->close();
echo $test;
Tach!
$stmt->num_rows;
Dieser Ausdruck macht genau gar nichts. Stimmt nicht ganz, konkret wird der Inhalt von $stmt->num_rows gelesen und nichts passiert mit ihm.
$stmt->close();
Zitat PHP-Handbuch:
Closes a prepared statement. mysqli_stmt_close() also deallocates the statement handle. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.
echo $stmt->num_rows;
Es gibt nichts mehr, das ausgegeben werden kann, weil das Statement geschlossen wurde und die Informationen darüber verworfen wurden.
Mit dem oben genannten Code erhalte ich keine echo Ausgabe. Ändere ich den Code wie folgt ab, erhalte ich eine Ausgabe, warum den Umweg über eine Variable?
Die Variable ist noch vor dem Schließen des Statements befüllt worden.
dedlfix.