Achot: $stmt->num_rows

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;

akzeptierte Antworten

  1. 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.