[PHP] Wieder ein Problem mit einer SQL-Anweisung

Dieses Thema im Forum "Webentwicklung" wurde erstellt von marjot, 10. August 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 10. August 2008
    Wieder ein Problem mit einer SQL-Anweisung

    PHP:
    $sql  "DELETE FROM personal_message WHERE id='" . $_POST [ "hid_msg_id" ]. "'" ;
    $result  mysql_query ( $sql );
    if (
    $result ) {
       echo 
    "Die Nachricht wurde gelöscht.<br>" ;
       echo 
    "<a href=\"messagecenter.php?show=inbox\">Zum Posteingang</a>" ;
    } else {
       echo 
    "Fehler beim Löschen der Nachricht. Probieren Sie es später noch einmal.<br>" ;
       echo 
    "<a href=\"messagecenter.php?show=inbox\">Zum Posteingang</a>" ;
    }
    Es tritt immer der Fall ein, dass result "true" zurückliefert, aber der Datensatz wird trotzdem nicht gelöscht. Was mache ich falsch?
     
  2. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    da würd ich glatt schätzen, dass deine WHERE-Bedingung nicht stimmt
    übrigens würde ich intval() verwenden, informier dich mal über mysql injection
     
  3. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    der query wird immer true zurückgeben selbst wenn nix gelöscht wurde...
    du suchst PHP: mysql_affected_rows - Manual die dir die anzahl der betroffenen datensätze zurückliefert
     
  4. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    Ok, mit den SQL-Injections muss ich mich nochmal beschäftigen.
    Aber warum wird denn der Datensatz nicht gelöscht?!

    mysql_affected_rows funktioniert irgendwie nicht

    PHP:
    $sql  "DELETE FROM personal_message WHERE id='" . intval ( $_POST [ "hid_msg_id" ]). "'" ;
    $result  mysql_query ( $sql );
    if (
    mysql_affected_rows ( $result ) ==  1 ) {
       echo 
    "Die Nachricht wurde gelöscht.<br>" ;
       echo 
    "<a href=\"messagecenter.php?show=inbox\">Zum Posteingang</a>" ;
    } else {
       echo 
    "Fehler beim Löschen der Nachricht. Probieren Sie es später noch einmal.<br>" ;
       echo 
    "<a href=\"messagecenter.php?show=inbox\">Zum Posteingang</a>" ;
    }
     
  5. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    Jo stimmt, das mit affected_rows funzt jetzt, aber ich weiß immer noch nicht, warum der datensatz net gelöscht wird!
    ich verzweifle langsam
     
  6. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    funktioniert die alleinige SQL-Abfrage im phpMyAdmin ?
     
  7. 10. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    jo, das ist ja soo komisch

    Edit:

    PHP:
    $sql  "DELETE FROM personal_message WHERE id=" . $msg_id ;
    $result  mysql_query ( $sql ) or die( mysql_error ());
    Diese Abfrage erzeugt folgende Ausgabe:
    Code:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
    for the right syntax to use near '' at line 1
    
     
  8. 11. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    Kein Wunder
    Denn bei..
    ..fehlen Anführungszeichen nach "id=".

    Probier' mal:
    PHP:
    $sql  "DELETE FROM personal_message WHERE id='" . $msg_id . "'" ;
     
  9. 11. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    wenn $msg_id eine zahl is werden keine anführungszeichen benötigt.

    für mich sieht das eher so aus als ob $msg_id leer ist, der query also mit id= endet.

    @all: schaut euch mal den unterschied zwischen ' und " in php nochmal genauer an: http://de2.php.net/manual/de/language.types.string.php
     
  10. 11. August 2008
    AW: Wieder ein Problem mit einer SQL-Anweisung

    Ich habe schon alles probiert. Auch mit Anführungszeichen.

    $msg_id ist nicht leer. Ich habe es vorher extra als Text ausgeben lassen und es war nicht leer.

    Ich verzweifel hier noch

    EDIT: Das Feld id ist übrigens in meiner Datenbank vom Typ int(9).

    EDIT2: OK, ich habe meinen Fehler gefunden. Wenn man eine Nachricht ausgewählt hat, habe ich die passende ID per verstecktem input-Feld weiter übergeben an eine Seite, die noch mal fragt, ob man wirklich löschen will.
    Von da aus habe ich aber vergessen die ID weiter zu übergeben und deshalb war es wirklich leer. Als ich probeweise die ID habe anzeigen lassen, war das in dem Teil, wo die Sicherheitsabfrage war. Da war sie ja auch noch vorhanden.
    Vielen Dank für eure Bemühungen!!


    Close.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.