[PHP] Beitrag wird nicht gelöscht

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von haiyyu.

    [PHP] Beitrag wird nicht gelöscht

    Hallo mitglieder,
    Ich bin wieder mal ein wenig mit php am spielen

    Ich habe mir zum Üben ein Gästebuch zusammen gebastelt wo ich nun will, das nach Drücken eines Buttons die Einträge die zu dem Button gehören gelöscht werden.

    Der Code sieht so aus:

    PHP-Quellcode

    1. <?
    2. session_start();
    3. include("config.php");
    4. if(!$_SESSION['admin']){
    5. header("Location:login.php");
    6. }
    7. $id = $_GET['id'];
    8. $sql="DELETE * FROM `guestbook` SET `show` = '1' WHERE `id` = '$id'";
    9. $result=mysql_query($sql);
    10. if($result){
    11. echo("Du hast Beitrag #".$id." erfolgreich gelöscht!<br /><a href='admin.php'>zur&uuml;ck</a>");
    12. }
    13. else
    14. if($result == False)
    15. {
    16. echo("Beitrag nicht gelöscht");
    17. }
    18. ?>


    Doch dort wird der Beitrag irgendwie nicht gelöscht.
    Hoffe ihr könnt mir auf die sprünge Helfen. Ich habs schon selbst versucht bin aber gescheitert.

    Fehlermeldung gibts keine auser das der else part ausgegeben wird

    Soviel ich immer gesagt bekommen habe (auch in vb) sollte man Spalten zwischen `` schreiben.

    Was soll der unterschied zwischen mysql_query und mysql_readl_escape_string sein

    *facepalm*

    Die ID so an dein Script übergeben: datei.php?id=zahl
    Jetzt könnte jeder an den Link irgendeinen MySQL-Code hängen, der dann ausgeführt werden würde.
    Damit das nicht passiert: Bei durch den Benutzer veränderbaren MySQL-Querys immer mit mysql_real_escape_string() escapen.
    I.e.:

    PHP-Quellcode

    1. $id = mysql_real_escape_string($_GET['id']);


    Zu deinem Problem:
    Lass mal den SET-Befehl weg. Vielleicht ändert das was.
    Eigentlich willst du ja nichts verändern, sondern nur einen Eintrag löschen, oder?
    Nein, nein, nein. mysql_query und mysql_real_escape_string sind zwei Verschiedene Dinge.

    mysql_query: benutzt man, um einen Query auszuführen
    mysql_real_escape_string: benutzt man, um einen String zu escapen, d.h. den String Zeichen entfernen, die MySQL-'Befehle' sind.

    edit: da warste schneller

    Mir isses auch grad aufgefallen: das SET ist unnötig und wiederspricht sich ja eigentlich indirekt. Du kannst ja keinen Satz bearbeiten, wenn er gelöscht wird, oder?

    haiyyu schrieb:

    Eigentlich willst du ja nichts verändern, sondern nur einen Eintrag löschen, oder?

    Genau ich will einfach nur löschen nicht bearbeiten.
    Ich habe nun den SET befehlt weggelassen sowie das ganze escapet (oder wie man das nennt) doch der fehler bleibt dennoch.

    Probier's mal mit diesem MySQL-Code:

    SQL-Abfrage

    1. DELETE FROM `guestbook` WHERE `id` = $id
    Veränderungen: Ich hab das * zwischen DELETE und FROM weggelassen und die Anführungszeichen vor und nach $id entfernt.
    Bingo.
    Der fehler scheint der stern gewesen zu sein nun wurden die einträge gelöscht.
    Jetzt wo ich mich erinere ...... ich arbeite in VB ja auch ohne den * beim löschen .... vielleicht sollte ich wenn ich mit php arbeite ein wenig an VB erinern sollte vielleicht ab und an mal bei fehlern helfen.

    Danke an euch 3

    Naja, der Grund wird sein, dass du nicht einfach eine einzelne Spalte löschen kannst.
    Du kannst ja auch nicht eine einzelne Spalte hinzufügen. Das muss immer eine ganze Zeile sein.