Ergebnis 1 bis 7 von 7

Thema: My SQL Eintragsproblem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    My SQL Eintragsproblem

    Hallo!

    Mich plagt seit einiger Zeit ein von mir eben erstelltest Script zum akzualisieren/ändern von News.
    Wie ihr euch vorstellen könnt, funktioniert es nicht richtig.

    PHP-Code:

    <?php
     
         $message  
    $_POST["message"];
          
    $titel $_POST["titel"];
          
    $id $_GET["newsid"];

     

        
    $verbindung mysql_connect ("localhost",
            
    "geändert""geändert")
            or die (
    "keine Verbindung möglich.
             Benutzername oder Passwort sind falsch"
    );
            
            
    mysql_select_db("geändert")
            or die (
    "Die Datenbank existiert nicht.");
     

    $aendern "UPDATE news Set
    titel= '
    $titel',
    message    = '
    $message',
    WHERE `id` = '
    $id'";
    $update mysql_query($aendern);
            


    if(
    $aendern == true)
       {
       echo 
    "Änderung erfolgreich!";
       }
    else
       {
       echo 
    "Fehler beim Speichern";
       }
     
            
    ?>
    So sieht es aus.
    Jetzt das komische. Wenn ich vor dem Query ein Echo "$titel $message $id"; schreibe, so werden die korrekten Werte angezeigt.
    Und wenn ich anstatt den Variablen, die ich eintragen will einen festen Wert eingebe, so wird dieser auch eingetragen.
    Also liegt es wohl daran, dass er Variablen nicht eintragen will.
    Aber erstens, sollte das doch funktionieren und zweitens haben die Variablen doch den korrekten Wert.

    Außerdem wird seltsamerweise immer "Änderung erfolgreich!" angezeigt.

    Wie kann das sein?

  2. #2
    Als erstes wuerde ich hier

    PHP-Code:
    $aendern "UPDATE news Set
    titel= '
    $titel',
    message    = '
    $message',
    WHERE `id` = '
    $id'";
    $update mysql_query($aendern); 
    Bei `id` die `` wegnehmen und ID groß schreiben.

    Dann wuerde ich auch noch die Variablen ueber
    PHP-Code:
    $_GET['variable'
    oder
    PHP-Code:
    $_POST['variable'
    abrufen, je nach dem wie du sie aus deinem Formular uebergeben tust.

    Dann sollte es auch klappen.


    gruss Jay

    >> So siehts nen News Update bei mir aus:
    PHP-Code:
    $sql=mysql_query("
    UPDATE "
    .$db."_post SET
      name='"
    .$_POST["name"]."',
      title='"
    .$_POST["title"]."',
      eintrag='"
    .$_POST["eintrag"]."'
    WHERE ID='"
    .$_GET["id"]."';
    "
    ); 
    >> Is auch nen bissel kuerzer denn dann brauchste es nicht in 2 Variablen schreiben.

    Geändert von Blakkeight (15.09.2006 um 00:39 Uhr)

  3. #3
    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.

  4. #4
    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.

  5. #5
    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

  6. #6
    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']); 

  7. #7
    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
  •