Verandering: MYSQL ERROR weiß nicht wo der Fehler liegt

Hi, bin gerade dabei ein Vokabeltrainer für  mich zu schreiben, mein Problem ist nur, das ich bei meiner MYSQL QUERY Anweisung immer einen Fehler bekomme und nun selber nicht mehr weiter weiß, bei google und so hab ich nichts gefunden.
Hier der CODE

  
if($connection)  
{  
     echo 'MYSQL CONNECTION<br>';  
     if(mysql_select_db($sql['db']))  
     {  
 echo 'Datenbank ausgewählt<br>';  
 $result = mysql_query ("INSERT INTO $k_sprache ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");  
 if($result)  
 {  
            echo 'Anweisung Erfolgreich!!!';  
 }  
 else  
        {  
             die ('MYSQL-ERROR:'.mysql_error()).';  
        }  
    }  
    else  
    {  
       echo 'Fehler beim Verbinden mit der Datenbank';  
    }  

Der Fehler, der von MYSQL Ausgeben wird ist:
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 ''lektion','deu','spa') VALUES ('1','Hallo','Hola')' at line 1

Danke schonmal für eure Hilfe

  1. Hello,

    $result = mysql_query ("INSERT INTO $k_sprache (lektion, deu , $kuerzel_sprache ) VALUES ('$lektion','$deu','$fremd')");

    und nun?
    Was ist der Fehler?

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. $result = mysql_query ("INSERT INTO $k_sprache (lektion, deu , $kuerzel_sprache ) VALUES ('$lektion','$deu','$fremd')");

      und nun?
      Was ist der Fehler?

      Das Wollte ich ja wissen der FehlerCode von MYSQL lautet:
      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 ''lektion','deu','spa') VALUES ('1','Hallo','Hola')' at line 1

      1. Hello,

        $result = mysql_query ("INSERT INTO $k_sprache (lektion, deu , $kuerzel_sprache ) VALUES ('$lektion','$deu','$fremd')");

        und nun?
        Was ist der Fehler?

        Das Wollte ich ja wissen der FehlerCode von MYSQL lautet:
        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 ''lektion','deu','spa') VALUES ('1','Hallo','Hola')' at line 1

        Und warum hast Du dann meine Antwort nicht genau gelesen und umgesetzt?
        Dann könntest Du jetzt auch die Antwort auf meine Frage geben!

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. DANKE!!!
          Damit is der Fehler behoben, ich habe das mit den weggelassenen Kommata nicht gesehen!!!

          1. Hello,

            Damit is der Fehler behoben, ich habe das mit den weggelassenen Kommata nicht gesehen!!!

            Und wenn Du den Fehler jetzt noch richtig beschreiben könntest (Kommata sind nicht die Lösung...), dann hätten auch noch Andere etwas davon, die den Thread später lesen.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
  2. Hi there,

    ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");

    Variablen zwischen einfachen Hochkommata werden nicht interpretiert...

    1. Hello,

      ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");

      Variablen zwischen einfachen Hochkommata werden nicht interpretiert...

      *g* welche meinst Du denn?
      Und welchen Interpreter meinst Du?
      Den MySQL-SQL-Interpreter oder den PHP-Interpreter?

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hi there,

        *g* welche meinst Du denn?
        Und welchen Interpreter meinst Du?
        Den MySQL-SQL-Interpreter oder den PHP-Interpreter?

        ich denke, nachdem er den variablen ein $-Zeichen voranstellt, werden es wohl PHP-Variablen sein, oder vielleicht wollte er ja wirklich den String $lektion in die Table schreiben...

        1. Hello,

          ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");

          Variablen zwischen einfachen Hochkommata werden nicht interpretiert...

          *g* welche meinst Du denn?
          Und welchen Interpreter meinst Du?
          Den MySQL-SQL-Interpreter oder den PHP-Interpreter?

          ich denke, nachdem er den variablen ein $-Zeichen voranstellt, werden es wohl PHP-Variablen sein, oder vielleicht wollte er ja wirklich den String $lektion in die Table schreiben...

          Entschuldige bitte. Dann hast Du meine Frage nicht verstanden. Ich werde versuchen, den Knoten aufzulösen.

          MySQL erwartet einen Befehlsstring für seine SQL-Textschnittstelle. Dieser kann Bezeichner enthalten, die aber nicht durch ein vorangestelltes Dollar-Zeichen, sondern durch ihre Position im Befehlsstring und ihre "Nicht-Sonderbedeutung" oder ihre Spezialmarkierung (Backticks) identifiziert werden. Einfache Anführungszeichen (Apostoph) kennzeichnet hingegen Textliterale, die als Werte übergeben werden.

          PHP erkennt seine Bezeichner an einem (oder auch zwei) vorangestellten Dollarzeichen,
          in einem String, der mit Doppelquote eröffnet wurde dann, wenn sie _nicht_ durch ein Escapezeichen (normalerweise der Backslash) maskiert sind.

          Als erstes wertet PHP den zusammengebastelten SQL-String aus, da er hier in Doppelhäkchen eingeschlossen ist. Dabei ist unerheblich, dass einzelne Teile nochmals in Einzelhäkchen eingeschlossen sind. Die Quotierung, die den String eröffnet, steuert das Verhalten.

          Also werden erst die PHP-Variablen $lektion, $deu und $fremd durch PHP gegen Werte ersetzt.
          Wenn alle Ersetzugnen stattgfunden haben [1], wird dieser String an die Textschnittstelle von MySQL, also den SQL-Parser, übergeben. Dieser versucht nun den String seinerseits zu analysieren und ggf. Ersetzungen durchzuführen.

          Die Spaltenbezeichner lektion, deu uns kuerzel_sprache können aber nicht erkannt werden, wenn sie als Werte für einen literalen Spaltentyp verpackt werden, also in Einfachhäkchen eingeschlossen werden. An dieser Stelle erwartet der SQL-Parser einfach noch nkeine Werte.

          [1] Diesen String sollte man sich in seinem Programmablauf immer aufheben für die Ausgabe, wenn ein Debugging notwendig ist.

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
  3. Mahlzeit,

    die ('MYSQL-ERROR:'.mysql_error()).';

    ^^

    Was soll das sein? Du öffnest wieder einen String obwohl danach kein String mehr kommt.
    Sogar das popelige Syntaxhighliting hier im Forum hat das erkannt. Arbeitest du mit Notepad?

    1. die ('MYSQL-ERROR:'.mysql_error()).';
      Was soll das sein? Du öffnest wieder einen String obwohl danach kein String mehr kommt.
      Das war wohl ne Tippfehler von mir, in meinem Code sthet das nicht so.
      Arbeitest du mit Notepad?
      Nein Tue ich nicht.

  4. Hi,

    Der Fehler, der von MYSQL Ausgeben wird ist:
    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 ''lektion','deu','spa') VALUES ('1','Hallo','Hola')' at line 1

    Tja, das Problem hast du mit maschinengenerierten Fehlermeldungen meistens - du bekommst nur den Hineweis auf "the right syntax to use near" angegeben, weil die Maschine nur merkt, ab wo sie etwas nicht mehr versteht; aber wo genau davor die fehlerhafte Stelle liegt, kann sie mangels Intelligenz nicht feststellen.

    Deshalb nutze bitte nicht diese Kurzform

    $result = mysql_query ("INSERT INTO $k_sprache ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");

    sondern schreibe so etwas immer so in der Art:

    $myQuery = "INSERT INTO ...";  
    $result = mysql_query ($myQuery);
    

    Dann kannst du dir an der Stelle, wo du mysql_error auswertest naemlich auch ganz leicht den Inhalt von $myQuery zur Kontrolle ausgeben lassen, um zu sehen, was du wirklich an die Datenbank geschickt hast.

    Also ...?

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  5. echo $begrüßung;

    $result = mysql_query ("INSERT INTO $k_sprache ('lektion','deu','$kuerzel_sprache') VALUES ('$lektion','$deu','$fremd')");

    An Stellen, an denen nur Spaltennamen erwartet werden, dürfen keine Strings stehen. Beachte den Unterschied zwischen Strings und Identifiers.

    Desweiteren solltest du dich mit dem Thema kontextgerechte Behandlung von Werten beschäftigen, sonst baust du dir SQL-Injection-Lücken und dergleichen in deine Programme.

    echo "$verabschiedung $name";