Ergebnis 1 bis 7 von 7

Thema: My SQL Eintragsproblem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    PHP-Code:
    $sql=mysql_query("
    UPDATE "
    .$db."_post SET
      name='"
    .$_POST["name"]."',
      title='"
    .$_POST["title"]."',
      eintrag='"
    .$_POST["eintrag"]."'
    WHERE ID='"
    .$_GET["id"]."';
    "
    ); 


    Ich sehe hier auf den ersten Blick einen gravierenden Fehler: Wenn du hier einen Titel, Eintrag, oder wasweissichwas zusendest und der Text z.B. ein ' enthaelt wird garantiert kein Eintrag gesetzt. Du musst die Strings erst passend escapen: mysql_escape_string($_POST["name"]), etc.

  2. #2
    Der Fehler liegt wohl eher daran, dass du $aendern abfragst, das enthält aber immer den String mit der Query und ist von daher immer true. Du müsstest schon $update abfragen.
    Ansonsten könntest du dir im Fehlerfall mit mysql_error() den Feheler ausgeben lassen.
    (Und das == true brauchst du nicht, das kannst du auch einfach weglassen )

    Ansonsten würde ich dir empfehlen, die id durch intval() zu jagen und die beiden Strings mit mysql_real_escape_string() zu escapen, um SQL Injections vorzubeugen.

    @ Jay
    Welchen Sinn hat es, wenn das Feld id heisst, da ID ohne `` hinzuschreiben? Darin besteht wohl kaum der Fehler.

  3. #3
    Wollst bloß erklaeren wie ichs mache, bei mir klappts ja schon seit 2 Jahren, deshalb wuesste ich nicht was daran falsch sein soll.

    >> @ Jay
    >> Welchen Sinn hat es, wenn das Feld id heisst, da ID ohne `` hinzuschreiben? Darin besteht wohl kaum der Fehler.

    Ich gehe hier auch von der:
    PHP-Code:
    ID INT AUTO_INCREMENT PRIMARY KEY 
    aus die Automatisch gesetzt wuerd. Deshalb die Schreibweise.

    Bei Selfphp Machhen siehs auch ohne ``.

    PHP-Code:
    $tab_news "
     UPDATE 
    $dbtabelle
     set newstitel = '
    $ntitel',
     newsautor = '
    $nautor',
     newsinhalt = '
    $ninhalt',
     newsurl = '
    $nurl',
     newsrubrik = '
    $nrubrik'
     WHERE newsid = 
    $auswahl"
    gruss Jay

  4. #4
    Zitat Zitat
    Bei `id` die `` wegnehmen und ID groß schreiben.
    Jain. Wenn die Tabellenstruktur mit Wörtern in kleinbuchstaben geschrieben wurde, sollte man auch id und nicht ID schreiben. Meines Wissens nach macht MySQL auch keine selbstständige ID Spalten Hinzufügung.

    `` sind außerdem dann sinnvoll, wenn ein Spaltenname mit einem MySQL Schlüsselwort identisch ist, z.B. ALTER.

    Noch ein Hinweis zum escapen: Wenn magic_quotes_gpc auf true gesetzt ist wäre ein stripslashes() vor mysql_real_escape_string() angesagt, da sonnst auch irrelevante \ im String enthalten blieben.
    PHP-Code:
    if ( get_magic_quotes_gpc() ):

     
    $_POST['titel'] = stripslashes ($_POST['titel']);

    endif;
    $_POST['titel'] = mysql_real_escape_string ($_POST['titel']); 

  5. #5
    So, einige (mich eingeschlossen) werden sich vllt über die Lösung des Problems wundern, naja ich bin noch selbst draufgekommen.

    Der Fehler lag im MySQL Update Code

    PHP-Code:
    message    '$message'
    Falsch

    PHP-Code:
    message    '$message' 
    Richtig

    Denn Message war das letze Feld und brauchte dannach keine Komma mehr.
    Trotzdem danke ich euch für eure Hilfe.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •