Start · Sprachen · PHP · Referenz · mysql_num_rows

mysql_num_rows

Funktion

Gibt die Anzahl der Zeilen in einem MySQL-Abfrageergebnis zurück (nur für <code>SELECT</code>-Abfragen).

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_num_rows(resource $result): int|false

Beschreibung

mysql_num_rows() ermittelt, wie viele Datensätze eine SELECT-Abfrage zurückgeliefert hat. Die Funktion erwartet eine Ergebnis-Ressource, wie sie von mysql_query() zurückgegeben wird, und liefert die Zeilenanzahl als Ganzzahl.

Typischerweise wird die Funktion eingesetzt, um vor dem Verarbeiten eines Ergebnisses zu prüfen, ob überhaupt Zeilen vorhanden sind, oder um die Gesamtanzahl der gefundenen Datensätze anzuzeigen. Bei INSERT-, UPDATE- oder DELETE-Abfragen sollte stattdessen mysql_affected_rows() verwendet werden.

Wichtig: Die gesamte mysql_*-Erweiterung wurde mit PHP 5.5.0 als veraltet markiert und mit PHP 7.0.0 vollständig entfernt. Für neue Projekte sollten ausschließlich mysqli_num_rows() oder das PDO-Äquivalent (PDOStatement::rowCount()) verwendet werden.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Eine gültige MySQL-Ergebnis-Ressource, die durch mysql_query() für eine SELECT-Abfrage erzeugt wurde.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der Zeilen im Ergebnis als int zurück. Bei einem Fehler (z. B. ungültige Ressource) wird false zurückgegeben.

Beispiele

Prüfen, ob eine SELECT-Abfrage Zeilen zurückgeliefert hat

<?php
$conn = mysql_connect('localhost', 'benutzer', 'geheimnis');
mysql_select_db('meine_datenbank', $conn);

$result = mysql_query("SELECT * FROM benutzer WHERE aktiv = 1", $conn);

if ($result === false) {
    die('Abfrage fehlgeschlagen: ' . mysql_error());
}

$anzahl = mysql_num_rows($result);

if ($anzahl > 0) {
    echo "Gefundene aktive Benutzer: " . $anzahl;
} else {
    echo "Keine aktiven Benutzer gefunden.";
}

mysql_free_result($result);
mysql_close($conn);
?>
Gefundene aktive Benutzer: 42

Modernes Äquivalent mit MySQLi

<?php
// Empfohlene Alternative für PHP 5.5+ und PHP 7+:
$mysqli = new mysqli('localhost', 'benutzer', 'geheimnis', 'meine_datenbank');

$result = $mysqli->query("SELECT * FROM benutzer WHERE aktiv = 1");

if ($result === false) {
    die('Abfrage fehlgeschlagen: ' . $mysqli->error);
}

$anzahl = mysqli_num_rows($result);
echo "Gefundene aktive Benutzer: " . $anzahl;

$result->free();
$mysqli->close();
?>
Gefundene aktive Benutzer: 42

// Wichtig · Fallstricke

Deprecation und Entfernung: Die gesamte mysql_*-Erweiterung wurde in PHP 5.5.0 als deprecated markiert und mit PHP 7.0.0 vollständig entfernt. Jeglicher Code, der diese Funktion verwendet, ist nicht mehr lauffähig unter PHP 7 oder neuer.

Nur für SELECT: mysql_num_rows() funktioniert ausschließlich mit SELECT-, SHOW-, DESCRIBE- und EXPLAIN-Abfragen. Für schreibende Abfragen (INSERT, UPDATE, DELETE) muss mysql_affected_rows() verwendet werden.

Performance-Hinweis: Wenn lediglich die Anzahl der Zeilen benötigt wird, ist es effizienter, direkt SELECT COUNT(*) in der SQL-Abfrage zu verwenden, anstatt alle Zeilen zu übertragen und sie anschließend mit mysql_num_rows() zu zählen.