Sven Rautenberg: PHP + MySQL: Datensatz löschen

Beitrag lesen

Moin!

Möchte einfach nur einen Datensatz löschen mit:

$loeschen = "DELETE FROM shop WHERE shopid = ´$shopid´";
mysql_query($loeschen);

Dürfte eine Fehlermeldung provozieren, weil die Backticks dort falsch sind. Backticks dienen zum Escaping von z.B. Spaltenbezeichnern, die reservierten Worten entsprechen (z.B. ist ein Spaltenname "alter" problematisch, weil es einen SQL-Befehl "ALTER" gibt).

Zur Begrenzung von Datenfeldwerten (auch wenn das Datenfeld nur Zahlen aufnimmt!) dient das einfache Anführungszeichen.

Außerdem ist zu beachten, dass $shopid sehr wahrscheinlich von dir vorher nicht auf Einhaltung der für dieses Datenfeld zutreffenden Werte geprüft wurde, und somit das Escaping des Strings durch myslq_real_escape_string() durchgeführt werden muß, um SQL-Injection zu verhindern!

Der Datensatz wird auch gelöscht, bis auf die Zelle shopid, diese ist primary key und auto_increment.

Entweder wird der Datensatz gelöscht - dann ist er hinterher weg. Oder er wird nicht gelöscht - dann ist er hinterher immer noch da. Wird er verändert (Felder werden auf Leerstrings gesetzt), ist das kein Löschen, und von deinem DELETE mit Sicherheit nicht ausgelöst.

- Sven Rautenberg

--
My sssignature, my preciousssss!