SQL Bestimmte Einträge in Datenbank löschen

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
645
ich habe mit PHP eine Eingabe für user programmiert. User haben die Möglichkeit, Werte auf einer Website einzugeben welche in der Datenbank mit der userID eingetragen werden. mit einem Befehl können sie auch alle ihre Einträge mit ihrer userID ausgeben lassen. das funktioniert mit einer Schleife, vor jedem Wert der ausgegeben wird wird mit einem counter eine Nummer angezeigt , z.B.:
Code:
(1) die erste Eingabe
(2) test
(3) bla bla

Die User sollen Einträge auch löschen können. dazu sollen sie die ID eingeben:
Code:
/delete 2

Problem ist ja jetzt, dass diese ID 2 nicht in der DB gespeichert ist. die 2 ist ja nur der 2. Eintrag in der DB mit seiner userID. in der DB gibts nur die AUTO_INCREMENT ID. und die will ich nicht für die Ausgabe verwenden, denn das soll sauber zählen von 1 bis 3 in dem Falle.

Jetzt ist die Frage, mit welchem SQL befehl kann ich jetzt Eintrag 2 löschen lassen ? ich hoffe ihr versteht das problem.
 
Hi,

Pfandfinder schrieb:
in der DB gibts nur die AUTO_INCREMENT ID. und die will ich nicht für die Ausgabe verwenden, denn das soll sauber zählen von 1 bis 3 in dem Falle.

keine Ahnung wie dein Frontend aussieht, aber ich würde es so machen, dass die AUTO ID im Hintergrund als Property des Objekts oder der Tabellenzeile oder des DIVs oder whatever hinterlegt ist (wie z.B. "data-db-id" o.Ä.).

Dann kann der User einfach den "Löschen" Button klicken, der mit dem versteckten AUTO ID Property gekoppelt ist und fertig. Auf einen Zähler würde ich hier nicht gehen, sofern es keine logische Verbindung mit der DB gibt.

Wenn es unbedingt mit Counter gehen muss ("delete 2") dann unbedingt den Counter einzigartig machen, damit du das entsprechende AUTO ID Property auslesen kannst.

VG,
Mad
 
  • Gefällt mir
Reaktionen: Harti61
Du solltest deine DB Schema mal hinzufügen, dann kann man geziehlter Tipps geben.

1. Du kannst natürlich auch die AUTO_INCREMENT ID nicht anzeigen, aber intern zwischenspeichern. (wie von Madman1209 genannt)
2. Ist die Kombination aus userID und Eintrag einzigartig (unique) dann kannst du dir die so suchen.
3. Je nach DB mit Fetch und Offset arbeiten

Gibt etliche Möglichkeiten ... => Etwas eigene Recherche hilft
 
Sollte in irgendeiner Form die echte ID der Tabelle angezeigt bzw. zum Löschen benutzt werden, muss man unheimlich vorsichtig sein, dass eine bewusste oder unbewusste Falscheingabe nicht dazu führt, dass Nutzer A Einträge von Nutzer B löscht. Das geht in eine ähnliche Richtung wie das Problem der SQL-Injection, nur dass hier eben einfach nur eine andere ID eingegeben werden müsste.

Es muss daher zwingend eine Plausibilitätsprüfung erfolgen, egal wie man es macht. Wenn also die tatsächliche ID aus der Tabelle benutzt werden würde, muss geprüft werden ob die zu löschende ID auch genau diesem Benutzer zugeordnet ist.
 
  • Gefällt mir
Reaktionen: nfsolutions und PHuV
Zurück
Oben