RomanS: MySQL will einfach nicht. Obwohl sooo simple...

Hey

vielleicht könnt ihr mir helfen bevor ich die paar Zeilen noch ein paar Stunden ansehe ohne einen Fehler zu finden.

Ohne grosse Worte, der Code sieht so aus:

    if(isset($_GET['save'])){  
      $name = $_POST['name'];  
      $desc = $_POST['desc'];  
      $from = $_POST['from'];  
      // überprüfung... alles ok bis hier:  
      echo $name.$desc.$from;  
      $aendern = "UPDATE artists Set name = '$name' WHERE id = '$artist'";  
      $update = mysql_query($aendern);  
      $aendern = "UPDATE artists Set desc = '$desc' WHERE id = '$artist'";  
      $update = mysql_query($aendern);  
      $aendern = "UPDATE artists Set from = '$from' WHERE id = '$artist'";  
      $update = mysql_query($aendern);  
    }

Bei dem Echo werden alle 3 Inputs Problemlos angezeigt...

Auch aus der Datenbank ausgelesen wird alles richtig.
Auch wenn ich die Update funktion in eines zusammenfasse geht nichts...

Jetzt kommt aber das Schräge, "name" funktioniert immer. Aber desc und from funktioniert nie, auch nicht wenn es alleine steht...

Danke schonmal!!
Grüsse, Roman

  1. Hi,

    $aendern = "UPDATE artists Set name = '$name' WHERE id = '$artist'";

    $aendern = "UPDATE artists Set desc = '$desc' WHERE id = '$artist'";

    $aendern = "UPDATE artists Set from = '$from' WHERE id = '$artist'";

    Jetzt kommt aber das Schräge, "name" funktioniert immer. Aber desc und from funktioniert nie, auch nicht wenn es alleine steht...

    http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

      Vielen, vielen dank!
      Gelobe die Worte jetzt mal auswendig zu lernen!

      Grüsse,
      Roman

  2. Hi!

    vielleicht könnt ihr mir helfen bevor ich die paar Zeilen noch ein paar Stunden ansehe ohne einen Fehler zu finden.

    MySQL will dich darauf hinweisen, du jedoch ignorierst seine Worte.

    $name = $_POST['name'];
          $desc = $_POST['desc'];
          $from = $_POST['from'];

    Warum kopierst du diese Werte in andere Variablen und nutzt nicht einfach die Werte in $_POST direkt?

    $aendern = "UPDATE artists Set name = '$name' WHERE id = '$artist'";

    Wie sieht es mit der kontextgerechten Behandlung der Werte aus?

    $update = mysql_query($aendern);

    Du weist zwar das Ergebnis einer Variablen zu, aber warum wertest du es nicht aus? Im Fehlerfall bekommst du false zurück. Den Wortlauf der Meldung bekommst du dann mit mysql_error().

    $aendern = "UPDATE artists Set desc = '$desc' WHERE id = '$artist'";
          $aendern = "UPDATE artists Set from = '$from' WHERE id = '$artist'";

    Dass du als Spaltennamen Schlüsselwörter verwendet hast, sagte ja schon ChrisB. Aber auch wenn du diese beim Benennen deiner Felder nicht beachtest, kannst du mit dem Nichtignorieren der Fehlerhinweise der Ursache für Fehlfunktionen näherkommen.

    Übrigens, der Grund, warum du diese Feldnamen (mit phpMyAdmin anzunehmenderweise) anlegen konntest, ist ... Schema Object Names (Stichwort Backticks).

    Lo!

  3. Bitte schreib das so:
    Bei dem Code wirds einem ja gleich anders :-(

    if(isset($_GET['save']))
    {
          echo $name.$desc.$from;

    $aendern = "UPDATE artists
                         Set name = '$_POST['name']',
                             desc = '$_POST['desc']',
                             from = '$_POST['from']'
                       WHERE id = '$artist'";
          $update = mysql_query($aendern);
     }

    Natürlich auf Kontextwechsel achten :-)

    1. Hi!

      Bitte schreib das so:

      Das würde ich nicht, denn da sind Fehler drin.

      $aendern = "UPDATE artists
                           Set name = '$_POST['name']',
                               desc = '$_POST['desc']',
                               from = '$_POST['from']'
                         WHERE id = '$artist'";

      Richtig wäre entweder die Notation "...$array[ohne_quotes]..." oder "...{$array['mit_quotes']}...". Aber diese Syntax benötigt man an dieser Stelle nicht, wenn man

      Natürlich auf Kontextwechsel achten :-)

      würde. Denn dann ergibt sich beispielweise so etwas:

      $aendern = sprintf("UPDATE artists SET name = '%s', desc = '%s', from = '%s' WHERE id = '%s'",
          mysql_real_escape_string($_POST['name']),
          mysql_real_escape_string($_POST['desc']),
          mysql_real_escape_string($_POST['from']),
          mysql_real_escape_string($artist));

      Lo!

      1. Stimmt auf die quotes hab ich jetzt nicht geschaut (hab schnell hingeschribben), meine Syntax ist natürlich falsch.

        Dein Beispiel ist mit der includierten Überprüfung natürlich besser :-)

        lg