Start · Sprachen · PHP · Referenz · dbase_get_record_with_names

dbase_get_record_with_names

Funktion

Liest einen einzelnen Datensatz aus einer dBase-Datenbank und gibt ihn als assoziatives Array zurück, wobei die Feldnamen als Schlüssel verwendet werden.

seit PHP 5.0.0 Kategorie: db

Signatur

dbase_get_record_with_names(resource $database, int $record): array|false

Beschreibung

dbase_get_record_with_names() liest einen bestimmten Datensatz aus einer geöffneten dBase-Datenbankdatei (.dbf) und gibt ihn als assoziatives Array zurück. Im Gegensatz zu dbase_get_record(), das numerisch indizierte Arrays liefert, verwendet diese Funktion die tatsächlichen Feldnamen der Datenbank als Array-Schlüssel, was den Code deutlich lesbarer und wartungsfreundlicher macht.

Das zurückgegebene Array enthält zusätzlich den Schlüssel deleted, der angibt, ob der Datensatz als gelöscht markiert ist (1) oder nicht (0). Gelöschte Datensätze werden in dBase-Dateien nicht sofort physisch entfernt, sondern lediglich markiert.

Die Funktion eignet sich besonders dann, wenn Feldnamen nicht im Voraus bekannt sind oder wenn man direkt über sprechende Bezeichner auf Felder zugreifen möchte, ohne zunächst dbase_get_header_info() aufrufen zu müssen.

Hinweis: Die dBase-Erweiterung ist nicht standardmäßig aktiv und muss bei Bedarf kompiliert oder als PECL-Paket eingebunden werden. Sie gilt als veraltet und sollte in neuen Projekten durch modernere Datenbanklösungen ersetzt werden.

Parameter

Name Typ Default Beschreibung
$database Pflicht resource Ein gültiges Datenbank-Handle, das zuvor mit dbase_open() geöffnet wurde.
$record Pflicht int Die 1-basierte Nummer des gewünschten Datensatzes. Der erste Datensatz hat die Nummer 1. Gültige Werte liegen zwischen 1 und der Gesamtzahl der Datensätze (ermittelbar mit dbase_numrecords()).

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, dessen Schlüssel den Feldnamen der dBase-Tabelle entsprechen. Zusätzlich enthält das Array den Schlüssel deleted (Wert 0 oder 1). Im Fehlerfall (z. B. ungültige Datensatznummer) wird false zurückgegeben.

Beispiele

Einzelnen Datensatz mit Feldnamen ausgeben

<?php
// dBase-Datei öffnen (nur lesend, Modus 0)
$db = dbase_open('/var/data/kunden.dbf', 0);

if ($db) {
    $anzahl = dbase_numrecords($db);
    echo "Anzahl Datensätze: $anzahl\n";

    // Ersten Datensatz lesen
    $datensatz = dbase_get_record_with_names($db, 1);

    if ($datensatz !== false) {
        // Gelöscht-Status prüfen
        if ($datensatz['deleted']) {
            echo "Datensatz ist als gelöscht markiert.\n";
        } else {
            echo "Name: " . trim($datensatz['NAME']) . "\n";
            echo "Stadt: " . trim($datensatz['STADT']) . "\n";
            echo "PLZ: " . trim($datensatz['PLZ']) . "\n";
        }
    }

    dbase_close($db);
} else {
    echo "Fehler beim Öffnen der Datenbankdatei.\n";
}
?>
Anzahl Datensätze: 42 Name: Müller Stadt: Berlin PLZ: 10115

Alle nicht-gelöschten Datensätze iterieren

<?php
$db = dbase_open('/var/data/artikel.dbf', 0);

if ($db) {
    $anzahl = dbase_numrecords($db);

    for ($i = 1; $i <= $anzahl; $i++) {
        $row = dbase_get_record_with_names($db, $i);

        if ($row === false) {
            continue;
        }

        // Gelöschte Datensätze überspringen
        if ($row['deleted']) {
            continue;
        }

        printf(
            "Artikel-Nr: %s | Bezeichnung: %s | Preis: %.2f\n",
            trim($row['ARTNR']),
            trim($row['BEZEICHNG']),
            (float) $row['PREIS']
        );
    }

    dbase_close($db);
}
?>
Artikel-Nr: A001 | Bezeichnung: Schraube M6 | Preis: 0.15 Artikel-Nr: A002 | Bezeichnung: Mutter M6 | Preis: 0.10

// Wichtig · Fallstricke

Veraltete Erweiterung: Die dBase-Erweiterung ist seit PHP 5 als PECL-Paket ausgelagert und wird in modernen Projekten nicht empfohlen. Für neue Anwendungen sollten relationale Datenbanken (MySQL, PostgreSQL, SQLite) verwendet werden.

Feldnamen: dBase-Feldnamen sind auf 10 Zeichen begrenzt und werden häufig in Großbuchstaben gespeichert. Die Array-Schlüssel spiegeln genau diese Namen wider. Zeichenkettenwerte enthalten oft abschließende Leerzeichen, die mit trim() entfernt werden sollten.

Datensatznummern: Die Nummerierung beginnt bei 1, nicht bei 0. Eine ungültige Nummer (kleiner als 1 oder größer als die Gesamtanzahl) führt zu einer PHP-Warnung und einem Rückgabewert von false.