Start · Sprachen · PHP · Referenz · dbase_get_header_info

dbase_get_header_info

Funktion

Liefert strukturelle Informationen aus dem Dateikopf (Header) einer geöffneten dBase-Datenbank als Array zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

dbase_get_header_info(resource $database): array

Beschreibung

dbase_get_header_info() liest den Header einer dBase-Datenbankdatei aus und gibt ein Array zurück, das die Felddefinitionen aller Spalten der Datenbank enthält. Für jedes Feld wird unter anderem Name, Typ, Länge und Präzision zurückgegeben.

Die Funktion ist besonders nützlich, wenn man die Struktur einer unbekannten dBase-Datei (.dbf) analysieren möchte, bevor man auf deren Datensätze zugreift. Mit den zurückgegebenen Informationen lassen sich z. B. dynamische Import-Routinen oder Validierungslogiken aufbauen.

Das zurückgegebene Array enthält pro Feld ein assoziatives Array mit den Schlüsseln name, type, length und precision. Der Typ ist dabei ein einzelnes Zeichen wie N (numerisch), C (Zeichenkette), D (Datum) oder L (logisch).

Hinweis: Die dBase-Erweiterung (dbase) ist eine optionale PECL-Erweiterung und muss separat installiert bzw. kompiliert werden. Sie eignet sich nur für einfache dBase-III-Dateien und ist nicht für den Einsatz mit modernen Datenbanksystemen gedacht.

Parameter

Name Typ Default Beschreibung
$database Pflicht resource Eine gültige dBase-Datenbankressource, wie sie von dbase_open() oder dbase_create() zurückgegeben wird.

Rückgabewert

Typ
array
Beschreibung
Gibt ein indiziertes Array zurück, in dem jedes Element ein assoziatives Array mit den Schlüsseln name (Feldname), type (Feldtyp als Buchstabe), length (Feldlänge in Bytes) und precision (Anzahl der Dezimalstellen bei numerischen Feldern) enthält. Im Fehlerfall wird false zurückgegeben.

Beispiele

Felder einer dBase-Datei ausgeben

<?php
// Datenbank im Lesemodus öffnen
$db = dbase_open('/var/data/adressen.dbf', 0);

if ($db === false) {
    die('Datenbankdatei konnte nicht geöffnet werden.');
}

$headerInfo = dbase_get_header_info($db);

if ($headerInfo === false) {
    die('Header-Informationen konnten nicht gelesen werden.');
}

foreach ($headerInfo as $index => $field) {
    echo "Feld #{$index}: Name={$field['name']}, Typ={$field['type']}, "
       . "Länge={$field['length']}, Präzision={$field['precision']}\n";
}

dbase_close($db);
?>
Feld #0: Name=VORNAME, Typ=C, Länge=30, Präzision=0 Feld #1: Name=NACHNAME, Typ=C, Länge=30, Präzision=0 Feld #2: Name=GEBDAT, Typ=D, Länge=8, Präzision=0 Feld #3: Name=GEHALT, Typ=N, Länge=10, Präzision=2

Dynamische Spaltenliste für Import-Routine ermitteln

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

if ($db) {
    $header = dbase_get_header_info($db);
    $columns = array_column($header, 'name');

    echo "Gefundene Spalten: " . implode(', ', $columns) . "\n";

    // Nur numerische Felder ausgeben
    $numericFields = array_filter($header, fn($f) => $f['type'] === 'N');
    echo "Numerische Felder: " . count($numericFields) . "\n";

    dbase_close($db);
}
?>
Gefundene Spalten: ARTNR, BEZEICHNUNG, PREIS, BESTAND Numerische Felder: 2

// Wichtig · Fallstricke

Verfügbarkeit: Die dbase-Erweiterung ist keine Standard-PHP-Erweiterung und muss über PECL installiert werden. Sie unterstützt ausschließlich das dBase-III-Format und eignet sich daher nicht für moderne Datenbankanwendungen.

Deprecation: Ab PHP 7 wurde die dBase-Erweiterung aus dem PECL-Hauptbestand entfernt und wird kaum noch aktiv weiterentwickelt. Für neue Projekte sollten moderne Datenbanklösungen wie SQLite, MySQL oder PostgreSQL bevorzugt werden.

Ressourcenverwaltung: Das zurückgegebene resource-Handle sollte nach Verwendung stets mit dbase_close() geschlossen werden, um Ressourcen freizugeben.