Signatur
Beschreibung
dba_delete() entfernt den Datensatz, der dem übergebenen $key in der DBA-Datenbank entspricht, auf die das Handle $dba zeigt. Die Datenbank muss dafür mit Schreibzugriff geöffnet worden sein (Modus "w" oder "n").
DBA (Database Abstraction Layer) ist eine PHP-Erweiterung für einfache schlüssel-wertbasierte Datenbanken wie GDBM, DB4, LMDB oder CDB. dba_delete() ist die entsprechende Gegenfunktion zu dba_insert() und dba_replace() und dient dazu, nicht mehr benötigte Einträge gezielt zu entfernen.
Existiert der angegebene Schlüssel nicht in der Datenbank, gibt die Funktion false zurück, ohne einen Fehler auszulösen. Es empfiehlt sich daher, vor dem Löschen mit dba_exists() zu prüfen, ob der Schlüssel vorhanden ist, um zwischen einem fehlgeschlagenen Löschvorgang und einem nicht vorhandenen Eintrag zu unterscheiden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $key Pflicht | string | Der Schlüssel des zu löschenden Eintrags in der DBA-Datenbank. | |
| $dba Pflicht | resource | Das DBA-Datenbankhandle, das mit dba_open() oder dba_popen() im Schreibmodus geöffnet wurde. |
Rückgabewert
true zurück, wenn der Eintrag erfolgreich gelöscht wurde, andernfalls false – z. B. wenn der Schlüssel nicht existiert oder kein Schreibzugriff besteht.Beispiele
Einfaches Löschen eines DBA-Eintrags
<?php
// Datenbank im Schreibmodus öffnen
$db = dba_open('/tmp/meine_datenbank.db', 'w', 'gdbm');
if ($db === false) {
die('Datenbank konnte nicht geöffnet werden.');
}
// Eintrag löschen
if (dba_delete('benutzername', $db)) {
echo 'Eintrag erfolgreich gelöscht.';
} else {
echo 'Eintrag konnte nicht gelöscht werden (nicht vorhanden oder Fehler).';
}
dba_close($db);
?>
Löschen nach vorheriger Existenzprüfung
<?php
$db = dba_open('/tmp/meine_datenbank.db', 'w', 'gdbm');
if ($db === false) {
die('Datenbank konnte nicht geöffnet werden.');
}
$schluessel = 'session_token_abc123';
if (dba_exists($schluessel, $db)) {
if (dba_delete($schluessel, $db)) {
echo "Schlüssel '{$schluessel}' wurde erfolgreich gelöscht.";
} else {
echo "Fehler beim Löschen des Schlüssels '{$schluessel}'.";
}
} else {
echo "Schlüssel '{$schluessel}' existiert nicht in der Datenbank.";
}
dba_close($db);
?>
// Wichtig · Fallstricke
Schreibzugriff erforderlich: Die Datenbank muss im Schreibmodus ("w", "c" oder "n") geöffnet sein. Wurde sie nur mit Lesemodus ("r") geöffnet, schlägt dba_delete() fehl.
Kein Fehler bei fehlendem Schlüssel: Gibt der Aufruf false zurück, bedeutet das nicht zwingend einen technischen Fehler – es kann auch sein, dass der Schlüssel schlicht nicht vorhanden ist. Zur Unterscheidung sollte dba_exists() vorab genutzt werden.
Datei-Locking: Bei dateibasierten DBA-Treibern empfiehlt sich ein sorgfältiger Umgang mit gleichzeitigen Zugriffen. dba_open() bietet Locking-Modi ("l") an, um Race Conditions zu vermeiden.