PHP 7.1.0 Released

mysqli_stmt::$num_rows

mysqli_stmt_num_rows

(PHP 5, PHP 7)

mysqli_stmt::$num_rows -- mysqli_stmt_num_rowsgibt die Anzahl der Zeilen einer Ergebnismenge zurück

Beschreibung

Objektorientierter Stil

Prozeduraler Stil

int mysqli_stmt_num_rows ( mysqli_stmt $stmt )

Gibt die Anzahl der Zeilen einer Ergebnismenge zurück. Die Verwendung von mysqli_stmt_num_rows() hängt davon ab, ob mysqli_stmt_store_result() verwendet wird oder nicht, um die gesamte Ergebnismenge einer Abfrage zwischenzuspeichern.

Wenn mysqli_stmt_store_result() verwendet wird, dann kann mysqli_stmt_num_rows() sofort danach aufgerufen werden.

Parameter-Liste

stmt

Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes Statementobjekt.

Rückgabewerte

Ein Integer-Wert, der die Anzahl der Zeilen in der Ergebnismenge angibt.

Beispiele

Beispiel #1 Objektorientierter Stil

<?php
/* Datenbankverbindung öffnen */
$mysqli = new mysqli("localhost""my_user""my_password""world");

/* Datenbankverbindung prüfen */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

$query "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if (
$stmt $mysqli->prepare($query)) {

    
/* Abfrage ausführen */
    
$stmt->execute();

    
/* Ergebnis holen */
    
$stmt->store_result();

    
printf("Number of rows: %d.\n"$stmt->num_rows);

    
/* Abfrage-Objekt schließen */
    
$stmt->close();
}

/* Verbindung schließen */
$mysqli->close();
?>

Beispiel #2 Prozeduraler Stil

<?php
/* Datenbankverbindung öffnen */
$link mysqli_connect("localhost""my_user""my_password""world");

/* Datenbankverbindung prüfen */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

$query "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if (
$stmt mysqli_prepare($link$query)) {

    
/* Abfrage ausführen */
    
mysqli_stmt_execute($stmt);

    
/* Ergebnis holen */
    
mysqli_stmt_store_result($stmt);

    
printf("Number of rows: %d.\n"mysqli_stmt_num_rows($stmt));

    
/* Abfrage-Objekt schließen */
    
mysqli_stmt_close($stmt);
}

/* Verbindung schließen */
mysqli_close($link);
?>

Die obigen Bespiele erzeugen folgende Ausgabe:

Number of rows: 20.

Siehe auch

add a note add a note

User Contributed Notes 1 note

up
61
Typer85 at gmail dot com
9 years ago
Please be advised, for people who sometimes miss to read this important Manual entry for this function:

If you do not use mysqli_stmt_store_result( ), and immediatley call this function after executing a prepared statement, this function will usually return 0 as it has no way to know how many rows are in the result set as the result set is not saved in memory yet.

mysqli_stmt_store_result( ) saves the result set in memory thus you can immedietly use this function after you both execute the statement AND save the result set.

If you do not save the result set but still want to use this function you have to actually loop through the result set one row at a time using mysqli_stmt_fetch( ) before using this function to determine the number of rows.

A thought though, if you want to determine the number of rows without storing the result set and after looping through it, why not just simply keep an internal counter in your loop every time a row is fetched and save the function call.

In short, this function is only really useful if you save the result set and want to determine the number of rows before looping through it, otherwise you can pretty much recreate its use like I suggested.
To Top