Start · Sprachen · PHP · Referenz · dbase_numrecords

dbase_numrecords

Funktion

Gibt die Anzahl der Datensätze (Zeilen) in einer geöffneten dBase-Datenbankdatei zurück.

Kategorie: db

Signatur

dbase_numrecords(resource $database): int

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

Typ
int
Beschreibung
Die Anzahl der Datensätze in der dBase-Datei als ganzzahligen Wert. Gelöschte, aber noch nicht gepackte Datensätze werden mitgezählt.

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);
Anzahl der Datensätze: 42 Mustermann, Max Musterfrau, Erika ...

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);
Die Datenbank enthält 150 Datensatz/Datensätze.

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