Start · Sprachen · PHP · Referenz · dbase_add_record

dbase_add_record

Funktion

Hängt einen neuen Datensatz an eine geöffnete dBase-Datenbank an.

seit PHP 5.0.0 Kategorie: db

Signatur

dbase_add_record(resource $database, array $record): bool

Beschreibung

dbase_add_record() fügt einen neuen Datensatz am Ende einer dBase-(.dbf-)Datenbankdatei hinzu. Die Datenbank muss zuvor mit dbase_open() im Schreibmodus geöffnet worden sein.

Das Array $record muss für jedes Feld der Datenbank genau einen Wert enthalten. Die Reihenfolge der Werte im Array entspricht der Reihenfolge der Felder, wie sie beim Anlegen der Datenbank definiert wurden. Logische Felder (L) erwarten 'T' oder 'F', Datumsfelder (D) das Format YYYYMMDD.

Die Funktion ist besonders dann sinnvoll, wenn vorhandene dBase-Dateien weitergeführt werden sollen, etwa beim Export von Daten aus PHP-Applikationen in DBF-Dateien für Legacy-Systeme oder GIS-Anwendungen.

Hinweis: Die dbase-Extension ist eine PECL-Erweiterung und muss separat installiert bzw. aktiviert werden. Sie ist nicht standardmäßig in PHP enthalten.

Parameter

Name Typ Default Beschreibung
$database Pflicht resource Ein Datenbank-Handle, das von dbase_open() zurückgegeben wurde. Die Datenbank muss mit Schreibzugriff (Modus 1 oder 2) geöffnet sein.
$record Pflicht array Ein indiziertes Array mit den Feldwerten des neuen Datensatzes. Die Anzahl der Elemente muss exakt der Anzahl der Felder in der Datenbank entsprechen. Die Reihenfolge muss der Feldreihenfolge der Datenstruktur entsprechen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Datensatz erfolgreich angehängt wurde, andernfalls false (z. B. bei falscher Anzahl an Feldern oder fehlenden Schreibrechten).

Beispiele

Datensatz an eine bestehende dBase-Datenbank anhängen

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

if ($db) {
    // Felder: NAME (C), ORT (C), PLZ (C), AKTIV (L), GEBURTSDATUM (D)
    $record = [
        'Mustermann',   // NAME
        'Berlin',       // ORT
        '10115',        // PLZ
        'T',            // AKTIV (logisch: true)
        '19900315',     // GEBURTSDATUM (YYYYMMDD)
    ];

    if (dbase_add_record($db, $record)) {
        echo 'Datensatz erfolgreich hinzugefügt.';
    } else {
        echo 'Fehler beim Hinzufügen des Datensatzes.';
    }

    dbase_close($db);
} else {
    echo 'Datenbank konnte nicht geöffnet werden.';
}
?>
Datensatz erfolgreich hinzugefügt.

Neue dBase-Datenbank anlegen und Datensatz einfügen

<?php
$path = '/tmp/personen.dbf';

// Datenbank mit Feldstruktur anlegen
$db = dbase_create($path, [
    ['NAME',   'C', 30, 0],
    ['ALTER',  'N',  3, 0],
    ['AKTIV',  'L',  1, 0],
]);

if ($db) {
    $record = [
        'Anna Schmidt', // NAME
        '28',           // ALTER
        'T',            // AKTIV
    ];

    if (dbase_add_record($db, $record)) {
        echo 'Datensatz wurde erfolgreich eingefügt.';
    } else {
        echo 'Einfügen fehlgeschlagen.';
    }

    dbase_close($db);
}
?>
Datensatz wurde erfolgreich eingefügt.

// Wichtig · Fallstricke

Anzahl der Felder: Stimmt die Anzahl der Elemente in $record nicht mit der Anzahl der Datenbankfelder überein, schlägt die Funktion fehl und gibt false zurück. Ein Debugging mit dbase_get_header_info() kann helfen, die korrekte Feldstruktur zu ermitteln.

Zeichenkodierung: dBase-Dateien verwenden häufig ältere Kodierungen wie CP850 oder ISO-8859-1. Strings sollten vor dem Einfügen ggf. mit iconv() oder mb_convert_encoding() konvertiert werden.

Verfügbarkeit: Die dbase-Extension ist seit PHP 5.3 nicht mehr im Kern enthalten und muss über PECL installiert werden (pecl install dbase). Ab PHP 7.x ist dbase 7.0.0+ erforderlich.