Signatur
Beschreibung
dbase_get_record() gibt den Datensatz mit der angegebenen Datensatznummer aus einer geöffneten dBase-Datenbankdatei zurück. Die Felder des Datensatzes werden als numerisch indiziertes Array geliefert, wobei der erste Index 0 dem ersten Feld entspricht.
Am Ende des zurückgegebenen Arrays enthält das letzte Element einen booleschen Wert, der angibt, ob der Datensatz als gelöscht markiert ist (true = gelöscht). Dieser Wert kann genutzt werden, um logisch gelöschte Einträge zu erkennen, da dBase-Datenbanken Datensätze nicht sofort physisch entfernen.
Die Funktion ist besonders nützlich, wenn auf Legacy-Daten in .dbf-Dateien zugegriffen werden muss, etwa bei der Migration älterer Datenbestände oder bei der Integration mit Software, die noch auf dem dBase-Format basiert. Für einen assoziativen Zugriff über Feldnamen bietet sich alternativ dbase_get_record_with_names() an.
Achtung: Die dbase-Erweiterung ist veraltet und nicht Teil der PHP-Standardinstallation. Sie muss explizit kompiliert oder als PECL-Paket eingebunden werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database Pflicht | resource | Ein gültiger dBase-Datenbankressource-Handle, wie er von dbase_open() zurückgegeben wird. |
|
| $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 dbase_numrecords($database). |
Rückgabewert
false zurückgegeben.Beispiele
Einzelnen Datensatz auslesen und anzeigen
<?php
// dBase-Datei öffnen (0 = Lesemodus)
$db = dbase_open('/var/data/adressen.dbf', 0);
if ($db === false) {
die('Datenbank konnte nicht geöffnet werden.');
}
// Ersten Datensatz lesen
$record = dbase_get_record($db, 1);
if ($record === false) {
die('Datensatz nicht gefunden.');
}
// Lösch-Markierung ist das letzte Element
$deleted = array_pop($record);
if ($deleted) {
echo 'Datensatz ist als gelöscht markiert.' . PHP_EOL;
} else {
echo 'Felder des Datensatzes:' . PHP_EOL;
foreach ($record as $index => $value) {
echo "Feld $index: $value" . PHP_EOL;
}
}
dbase_close($db);
?>
Alle nicht gelöschten Datensätze iterieren
<?php
$db = dbase_open('/var/data/produkte.dbf', 0);
if ($db === false) {
die('Fehler beim Öffnen der Datenbank.');
}
$anzahl = dbase_numrecords($db);
for ($i = 1; $i <= $anzahl; $i++) {
$record = dbase_get_record($db, $i);
if ($record === false) {
continue;
}
// Letztes Element ist der Lösch-Marker
$deleted = $record[count($record) - 1];
if ($deleted) {
// Überspringe gelöschte Datensätze
continue;
}
// Index 0 = Artikelname, Index 1 = Preis (Beispiel)
echo 'Artikel: ' . trim($record[0]) . ', Preis: ' . trim($record[1]) . PHP_EOL;
}
dbase_close($db);
?>
// Wichtig · Fallstricke
Veraltete Erweiterung: Die dbase-Erweiterung ist nicht mehr aktiv gepflegt und in modernen PHP-Installationen standardmäßig nicht verfügbar. Für neue Projekte sollten relationale Datenbanken (z. B. MySQL, PostgreSQL, SQLite) verwendet werden.
1-basierte Indizierung: Im Gegensatz zu den meisten PHP-Arrays beginnt die Datensatznummernzählung bei 1, nicht bei 0. Ein Aufruf mit $record = 0 liefert false.
Leerzeichen: Zeichenketten-Felder aus dBase-Dateien sind häufig mit Leerzeichen aufgefüllt. Es empfiehlt sich, die Werte mit trim() zu bereinigen.
Für einen komfortableren Zugriff über assoziative Feldnamen steht dbase_get_record_with_names() zur Verfügung.