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