Löschen von Datensätzen über SQL-Anweisungen
Löschen funktioniert in der gleichen Weise wie Update. Nur müssen hier keine einzelnen Felder angegeben werden, sondern man sollte gewissenhaft die WHERE-Bedingung setzen. Ansonsten hat man eine komplett leere Datenbank!
Die SQL-Anweisung ist:
DELETE FROM kontakte WHERE id='1'
Diese kann so in phpMyAdmin über den Reiter SQL ausgeführt werden.
Soll es über PHP geschehen, kommt unsere query
-Anweisung wieder zum Zuge:
$db->query("DELETE FROM kontakte WHERE id='1'");
Wir können nun wieder über die Anweisung affected_rows
herausfinden, wie viele Datensätze betroffen sind.
$db->query("DELETE FROM kontakte WHERE id='1'");
echo $db->affected_rows;
Hier sollte nun beim Ausführen des Codes die Anzahl 1 erscheinen. Ein Datensatz wurde gelöscht, was wir über phpMyAdmin schnell kontrollieren können.
Die SQL-Anweisung ist die gefährlichste aller SQL-Anweisungen. Lässt man diese SQL-Anweisung auf einer großen Datenbank ausführen, hat man schnell eine sehr kleine Datenbank (sprich mit 0 Datensätze). Wird die WHERE-Bedingung falsch oder gar nicht gesetzt, wie im folgenden Beispiel, werden alle Datensätze gelöscht. Dazu erfolgt keinerlei Rückfrage!
$db->query("DELETE FROM kontakte");
echo $db->affected_rows;
Daher immer die WHERE-Bedingung DOPPELT kontrollieren und ein LIMIT
mitgeben, wenn es Sinn macht! Oft ist es so, dass eh nur 1 Datensatz gelöscht werden soll. Daher ist dann LIMIT 1
immer ein Sicherheitsnetz, über das man im Notfall froh ist. Ein verlorener Datensatz ist nicht so schlimm wie tausende.
$db->query("DELETE FROM kontakte WHERE id='1' LIMIT 1");
echo $db->affected_rows;
Wenn also eh nur ein Datensatz gelöscht werden wird, ist die Limitierung der Anzahl der zu löschenden Datensätze extrem sinnvoll. Außerdem schadet er nicht. In dem Fall, dass es den gewählten Datensatz gibt, wird auch genau dieser Eine gelöscht. Gibt es keinen Datensatz mit dieser Bedingung und mit der Anweisung LIMIT 1
wird auch keiner (also 0 Datensätze) gelöscht. Die Anweisung LIMIT 1
verhält sich hier also neutral.
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: