Signatur
Beschreibung
dbase_numrecords() ermittelt die Gesamtzahl der Datensätze, die in einer geöffneten dBase-Datei (.dbf) enthalten sind. Der Rückgabewert schließt auch als gelöscht markierte Datensätze ein, da dBase Löschungen zunächst nur als Markierung speichert und die Datensätze erst beim Packen (mit dbase_pack()) physisch entfernt werden.
Die Funktion ist nützlich, um Schleifen über alle Datensätze einer Datenbank zu steuern – die Datensatz-Indizes in dBase beginnen bei 1 und enden bei dem von dbase_numrecords() gelieferten Wert.
Typische Anwendungsfälle sind die Iteration über alle Zeilen mit dbase_get_record() oder dbase_get_record_with_names(), das Prüfen, ob eine Datei Daten enthält, sowie das Berechnen von Fortschrittsbalken bei der Datenverarbeitung.
Hinweis: Die dBase-Erweiterung ist eine PECL-Erweiterung und muss separat installiert werden. Sie eignet sich ausschließlich für Legacy-Systeme, die das veraltete .dbf-Format nutzen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database Pflicht | resource | Ein gültiges Datenbank-Handle, das zuvor mit dbase_open() oder dbase_create() erzeugt wurde. |
Rückgabewert
Beispiele
Alle Datensätze einer dBase-Datei ausgeben
<?php
// Datenbank im Lesemodus öffnen (Modus 0 = read-only)
$db = dbase_open('/var/data/adressen.dbf', 0);
if ($db === false) {
die('Datenbankdatei konnte nicht geöffnet werden.');
}
$anzahl = dbase_numrecords($db);
echo "Anzahl der Datensätze: " . $anzahl . PHP_EOL;
// Datensatz-Indizes beginnen bei 1
for ($i = 1; $i <= $anzahl; $i++) {
$datensatz = dbase_get_record_with_names($db, $i);
// Gelöschte Datensätze überspringen
if ($datensatz['deleted']) {
continue;
}
echo $datensatz['NAME'] . ', ' . $datensatz['VORNAME'] . PHP_EOL;
}
dbase_close($db);
Prüfen, ob eine dBase-Datei Datensätze enthält
<?php
$db = dbase_open('/var/data/produkte.dbf', 0);
if ($db === false) {
die('Fehler beim Öffnen der Datenbankdatei.');
}
$anzahl = dbase_numrecords($db);
if ($anzahl === 0) {
echo 'Die Datenbank enthält keine Datensätze.';
} else {
echo 'Die Datenbank enthält ' . $anzahl . ' Datensatz/Datensätze.';
}
dbase_close($db);
// Wichtig · Fallstricke
Gelöschte Datensätze: dBase markiert gelöschte Datensätze intern lediglich mit einem Lösch-Flag, entfernt sie aber nicht sofort. dbase_numrecords() zählt diese mitgelöschten Datensätze mit. Um sie beim Iterieren auszublenden, sollte das Feld deleted im Datensatz geprüft werden. Mit dbase_pack() können gelöschte Datensätze endgültig entfernt werden.
Index-Basis: Der erste gültige Index für dbase_get_record() ist 1, nicht 0. Eine Schleife muss daher von 1 bis einschließlich dbase_numrecords() laufen.
Veraltete Technologie: Das dBase-Format und die zugehörige PHP-Erweiterung gelten als veraltet. Für neue Projekte sollten moderne Datenbankabstraktionen (z. B. PDO mit SQLite oder MySQL) bevorzugt werden.