LuckyLuc: PHP + MySQL: Datensatz löschen

Hallo,
hoffe ganz simples Problem:

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

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

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

Der Datensatz bleibt also bestehen nur steht nix mehr drin bis auf die shopid!

Weiß jemand warum? muss ich irgendwie vorher was umstellen bei dem Datensatz?

Danke für eure Hilfe

  1. 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!