Signatur
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
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);
?>
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();
?>
// 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.