Anna: Für mich unverständliche Fehlermeldung

Hallo!

Ich habe gerade ein Bewertungsscript für FanFictions geschrieben, was soweit auch eigentlich funktioniert (hatte). Aber jetzt hatte ich noch was geändert und nun kommt folgende Fehlermeldung:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web698/html/fanstuff/vote/vote-add.php on line 60

Die kommt, wenn man ausgewählt hat wie man die FF gefunden hat (z.B. 1 für miserabel und 5 für genial).
Versteht jemand diese Meldung? Ich nämlich nicht. Bzw. nicht wirklich. Im Zusammenhang mit dem Script fällt mir kein Fehler auf:

$sql = "SELECT ID,Stimmen,Punkte FROM FanFiction WHERE ID = '".$FFvote['ID']."'";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
$neuStimmen = $row['Stimmen'] + 1;
$neuPunkte = $row['Punkte'] + $_POST['vote'];
$sql = "INSERT INTO FanFiction
                (Stimmen,Punkte)
         VALUES
                ('".$neuStimmen."',
                '".$neuPunkte."')
        WHERE

$FFvote['ID'] = '".$row['ID']."'";

mysql_query($sql) OR die(mysql_error());
echo "Deine Stimme wurde gezählt! (:";

Da wo die >> sind, ist Zeile 60, die die Fehlermeldung ja angibt...
Ich hoffe mir kann da jemand helfen!... :)
VlG,
Anna

  1. Hi,

    WHERE

    $FFvote['ID'] = '".$row['ID']."'";

    Da wo die >> sind, ist Zeile 60, die die Fehlermeldung ja angibt...

    genau da ist auch das Problem...Das WHERE (Zeile 59) gehört zu einem SQL-String. Dann kommt das $FFvote, das ist eine Variable, also musst du es Quoten:
            WHERE
              ".$FFvote['ID']." = '".$row['ID']."'";
    Benutzt du eigentlich nen Editor mit Syntax-Highlighting? Damit wäre es dir sofort aufgefallen.

    MfG,
      Juan

    1. Hi Juan,

      ".$FFvote['ID']." = '".$row['ID']."'";

      Wenn man aber schon Double-Quotes verwendet, dann kann man auch direkt

      $sql = "[…] {$FFvote['ID']} = {$row['ID']}"

      verwenden.

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
      Patch zur Verwendung von PATHINFO in JLog
      Ein wirklich weiser Mann spielt nie mit einem Einhorn Bockspringen. (Aus dem Häfft)
      1. Hi,

        ".$FFvote['ID']." = '".$row['ID']."'";

        Wenn man aber schon Double-Quotes verwendet, dann kann man auch direkt

        $sql = "[…] {$FFvote['ID']} = {$row['ID']}"

        verwenden.

        klar kann man das, aber da sie es die ganze Zeit mit Strinkonkatenation gemacht hat, wollte ich dabei bleiben.

        MfG,
          Juan

  2. Hi Anna,

    $FFvote['ID'] = '".$row['ID']."'";

    Guck dir mal den Unterschied an, wie du auf $FFvote['ID'] und wie du auf $row['ID'] zugreifst ;-)

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Patch zur Verwendung von PATHINFO in JLog
    Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)
    1. Hi Anna,

      $FFvote['ID'] = '".$row['ID']."'";

      Guck dir mal den Unterschied an, wie du auf $FFvote['ID'] und wie du auf $row['ID'] zugreifst ;-)

      MfG, Dennis.

      Hi Dennis...

      Danke schonmal für den Tipp... Syntax-Highlightning hab ich, ist mir trotzdem nicht aufgefallen.. ;) ^^
      Trotz allem funktioniert es nicht... Jetzt kommt folgender Fehler:

      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 'WHERE 2 = '2'' at line 6

      ?? Tja, geht also noch nicht... Könnt ihr mir noch weiter helfen? Das wäre nett. ^^
      VlG, Anna

      1. Hi Anna,

        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 'WHERE 2 = '2'' at line 6

        Das hat jetzt aber nichts mehr mit PHP zu tun, sondern vielmehr mit MySQL - der SQL-String den zu zusammenbastelst ist also von der Syntax her falsch. Schreibe nach dem Zusammensetzen des SQL-Strings einfach mal ein echo $sql; in dein Script und schau dir den SQL-String an (bzw. poste ihn auch hier).

        Ich vermute mal, da fehlt irgendwo eine schließende Klammer oder so etwas - jedenfalls scheint das WHERE da für MySQL unerwartet zu kommen.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
        Patch zur Verwendung von PATHINFO in JLog
        Wissen ist gut, Können ist besser, aber das Beste und Interessanteste ist der Weg dahin! (Detlef G.)