Marco: Error: You have an error in your SQL syntax

hallo,

ich habe schon in ein anderen forum geschrieben.vor einer woche. aber da möchte mir keiner helfen oder es weiß keiner ein elösung. darum wende ich mich jetzt an dieses forum. weil ich schon sehr viel gutes über selfhtml gehört habe. ich hoffe es kann mir jemand bei meinem problem helfen. habe das problem schon seid 2 wochen. und weiß einfach nicht weiter.

also folgendes. ich bekomme immer dieses fehlermeldung angezeigt:

Error: 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 '-garantiert_de_1.ratings WHERE id='id21'' at line 1.

auf dieser seite:
http://www.masugadesign.com/the-lab/scripts/unobtrusive-ajax-star-rating-bar/
das Unobtrusive AJAX Star Rating Bar runtergeladen und installiert. also die datenbank erstellt usw. lief alles reibungs los. bis ich die index.php aufegrufen habe. und der fehler erscheint. den fehler auf meiner seite:
http://www.lachen-garantiert.de/ajaxstarrater/index.php

ja das dazu. falls ihr noch fragen oder infos braucht, fragt einfach.
ich hoffe ihr könnt mir helfen. weiß ncihts mehr zu tun.

ich wünsche euch noch ein schönen abend.

mfg Marco

  1. hi,

    also folgendes. ich bekomme immer dieses fehlermeldung angezeigt:

    Bitte gebe bei solchen Fragen auch an, mit welchem Datenbanksystem und -version du arbeitest.

    Und bitte lasse dir in solchen Fällen zukünftig auch immer den (dynamisch) generierten SQL-String mit ausgeben.

    Error: 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 '-garantiert_de_1.ratings

    Ohne die Query zu kennen, kann man nämlich nur raten - vermutlich hast du vergessen, ein Textliteral auch also solches zu kennzeichnen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hallo,

      vielen dank für deine schnelle hilfe.
      ich arbeite mit phpmyadmin und meine mysql version ist. 5.

      Und bitte lasse dir in solchen Fällen zukünftig auch immer den (dynamisch) generierten SQL-String mit ausgeben.

      was ist ein sql-String. und wie lasse ich ihn ausgeben?

      mfg Marco

      1. Hi,

        was ist ein sql-String.

        ein String, der das SQL-Statement enthält, welches Du der Datenbank entgegenzuschleudern gedenkst.

        und wie lasse ich ihn ausgeben?

        Mit 'echo', 'print', 'printf' und ähnlichen Funktionen, sofern Du beispielsweise PHP verwendest.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          was ist ein sql-String.

          ein String, der das SQL-Statement enthält, welches Du der Datenbank entgegenzuschleudern gedenkst.

          und wie lasse ich ihn ausgeben?

          Mit 'echo', 'print', 'printf' und ähnlichen Funktionen, sofern Du beispielsweise PHP verwendest.

          Cheatah

          hi,

          sorry aber ich bin echt ein neuling auf diesem gebiet. ich habe überhaupt keine ahnung wie ich das machen soll. ich soll eine php datei erstellen und was soll ich da rein schreiben? sorry für die dummen fragen.

          mfg Marco

          1. Hallo Marco!

            sorry aber ich bin echt ein neuling auf diesem gebiet. ich habe überhaupt keine ahnung wie ich das machen soll. ich soll eine php datei erstellen und was soll ich da rein schreiben? sorry für die dummen fragen.

            Auch sorry, wenn ich auch noch dümmer frage... aber... warum hast Du dann die Aufgabe bekommen?

            Bitte zitiere von Deinem Vorposter nur das, worauf Du Dich beziehst. Danke.

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            Nichts ist unmöglich? Doch!
            Heute schon gegökt?
          2. Ahoi Marco,

            ich soll eine php datei erstellen und was soll ich da rein schreiben?

            nein,.. Du hast ja schon einen Fehler, erstelle nicht noch eine weitere
            Datei die evt. dann Fehler enthält. Öffne die Datei welche diese
            fehlerhafte Abfrage abschickt und gebe den Query-String vor dem Absenden
            aus.

            MfG

            1. hi,

              wünsche euch ein wunderschönenen guten morgen.

              ich soll eine php datei erstellen und was soll ich da rein schreiben?

              nein,.. Du hast ja schon einen Fehler, erstelle nicht noch eine weitere
              Datei die evt. dann Fehler enthält. Öffne die Datei welche diese
              fehlerhafte Abfrage abschickt und gebe den Query-String vor dem Absenden
              aus.

              also hier jetzt meine _config-rating.php datei:

              //Connect to  your rating database
               $dbhost        = 'localhost';
               $dbuser        = 'test';
               $dbpass        = '*******';
               $dbname        = 'test';
               $tableName     = 'ratings';

              $unitwidth     = 30; // the width (in pixels) of each rating unit (star, etc.)
               // if you changed your graphic to be 50 pixels wide, you should change the value above

              $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die  ('Error connecting to mysql');
               mysql_select_db($dbname);

              ?>

              wenn ich das jetzt richtig verstanden habe. ist der SQL-string die letzte Zeile. also:

              $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die  ('Error connecting to mysql');
               mysql_select_db($dbname);

              ist das jetzt der SQL-string?
              ich hoffe das hilft euch weiter.

              mfg Marco

              1. Ahoi Marco,

                also hier jetzt meine _config-rating.php datei:

                diese Datei stellt nur die Verbindung zum SQL-Server her, außer du hast etwas weggelassen.

                wenn ich das jetzt richtig verstanden habe. ist der SQL-string die letzte Zeile. also:

                nein das hat du flasch verstanden. anfragen werden per http://de2.php.net/manual/de/function.mysql-query.php i.d.R. abgeschickt.

                MfG

                1. Ahoi Marco,

                  also hier jetzt meine _config-rating.php datei:

                  diese Datei stellt nur die Verbindung zum SQL-Server her, außer du hast etwas weggelassen.

                  wenn ich das jetzt richtig verstanden habe. ist der SQL-string die letzte Zeile. also:

                  nein das hat du flasch verstanden. anfragen werden per http://de2.php.net/manual/de/function.mysql-query.php i.d.R. abgeschickt.

                  ich glaub ich habs. in der db.php steht das hier.

                  $query = mysql_query("SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());

                  das ist doch richtig oder?

                  mfg Marco

                  1. Ahoi Marco,

                    $query = mysql_query("SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());

                    das ist doch richtig oder?

                    Das könnte es sein, teste mal diese veränderung:

                      
                    $sql = "SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ";  
                    $query = mysql_query($sql)or die(" Error: ".mysql_error()."<br />".$sql);  
                    
                    

                    Informiere dich über SQL injections.

                    MfG

                    1. Ahoi Marco,

                      $query = mysql_query("SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ")or die(" Error: ".mysql_error());

                      das ist doch richtig oder?

                      Das könnte es sein, teste mal diese veränderung:

                      $sql = "SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ";
                      $query = mysql_query($sql)or die(" Error: ".mysql_error()."<br />".$sql);

                        
                      ich bekomme immer noch die gleiche fehlermeldung angezeigt. habe dein code in der db.php eingebunden. der fehler lautet wie weiterhin.  
                        
                      Error: 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 '-garantiert\_de\_1.ratings WHERE id='id21'' at line 1  
                        
                      mfg Marco  
                      
                      
                      1. Ahoi Marco,

                        ich bekomme immer noch die gleiche fehlermeldung angezeigt. habe dein code in der db.php eingebunden. der fehler lautet wie weiterhin.

                        Und was sagt dir das? hast du meine veränderung verstanden und weisst
                        was sie tut? sie sollte hinter die fehlermeldung den kompletten
                        querry-String schreiben. da er aber wohl nicht ausgegeben wird scheint
                        sich das problem irgendwo anders zu befinden.

                        MfG

                        1. Ahoi Marco,

                          ich bekomme immer noch die gleiche fehlermeldung angezeigt. habe dein code in der db.php eingebunden. der fehler lautet wie weiterhin.

                          Und was sagt dir das? hast du meine veränderung verstanden und weisst
                          was sie tut? sie sollte hinter die fehlermeldung den kompletten
                          querry-String schreiben. da er aber wohl nicht ausgegeben wird scheint
                          sich das problem irgendwo anders zu befinden.

                          ja das habe ich mir schon gedacht. das der code den querry-String ausgibt.

                          wenn ich den code von dir in die _confog-rating.php einbinde. kommt keine fehlermeldung mehr. und er zeigt mir das an was er mir anzeigen soll. aber ich kann denn nicht bewerten. also wenn ich auf ein stern klick. speichert er das nicht.

                          kannst dir hier anschauen.

                          http://www.lachen-garantiert.de/ajaxstarrater/index.php

                          ich habe den code in jeder php datei mal eingesetzt aber den querry-String zeigt er mir nicht an.

                          mfg Marco

                      2. Hallo

                        '-garantiert_de_1.ratings ...

                        Das - ist ein reserviertes Zeichen für Operatoren, also wird genau das der Fehler sein. Du versuchst "garantiert_de_1.ratings" von "www.lachen" zu subtrahieren. Du solltest ein [ vor und ein ] hinter dem Tabellennamen www.lachen-garantiert_de_1.ratings machen, also quasi so
                        [www.lachen-garantiert_de_1].[ratings] oder
                        [www.lachen-garantiert_de_1.ratings] oder vielleicht einfach nur so
                        ratings

                        Aber keine Ahnung was  "www.lachen-garantiert_de_1" bedeutet, wie mysql das interpretiert, als die Datenbank oder das Schema ..

                        BTW: du hättest einfach $sql ausgeben sollen, bevor es won "mysql_query" benutzt wird. So unverständlich war doch das nun auch nicht?!

                        Und sicher, dass deine IDs "id21", "id22" usw. sind und nicht einfach "21", "22"? Wenn die Spalte "id" nämlich numerisch ist, wirst du gleich das nächste Problem bekommen.

                        Gruss
                        Frank

                        1. Hallo

                          '-garantiert_de_1.ratings ...

                          Das - ist ein reserviertes Zeichen für Operatoren, also wird genau das der Fehler sein. Du versuchst "garantiert_de_1.ratings" von "www.lachen" zu subtrahieren. Du solltest ein [ vor und ein ] hinter dem Tabellennamen www.lachen-garantiert_de_1.ratings machen, also quasi so
                          [www.lachen-garantiert_de_1].[ratings] oder
                          [www.lachen-garantiert_de_1.ratings] oder vielleicht einfach nur so
                          ratings

                          Aber keine Ahnung was  "www.lachen-garantiert_de_1" bedeutet, wie mysql das interpretiert, als die Datenbank oder das Schema ..

                          BTW: du hättest einfach $sql ausgeben sollen, bevor es won "mysql_query" benutzt wird. So unverständlich war doch das nun auch nicht?!

                          Und sicher, dass deine IDs "id21", "id22" usw. sind und nicht einfach "21", "22"? Wenn die Spalte "id" nämlich numerisch ist, wirst du gleich das nächste Problem bekommen.

                          hallo,

                          lachen-garantiert_de_1 ist mein datenbank name. wie in der _config-rating zu sehen ist.

                            
                          //Connect to  your rating database  
                           $dbhost        = 'localhost';  
                           $dbuser        = '*****';  
                           $dbpass        = '****';  
                           $dbname        = 'lachen-garantiert_de_1';  
                           $tableName     = 'ratings';  
                            
                           $unitwidth     = 30; // the width (in pixels) of each rating unit (star, etc.)  
                           // if you changed your graphic to be 50 pixels wide, you should change the value above  
                            
                          $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die  ('Error connecting to mysql');  
                           mysql_select_db($dbname);  
                            
                            
                          ?>  
                          
                          

                          -garantiert_de_1.ratings

                          gibt es so nicht in einer datei von mir. er kürzt den namen einfach ab und setzt ein .ratings dahinter. warum er das macht ist mir schleihaft. das hat mich auch schon gewundert, warum da immer nur die hälfte vom namen steht.

                          mfg Marco

                          1. Hi,

                            Junge, du hast wirklich Tomaten auf den Augen.

                            Es kürzt den Namen deshalb ab, weil es mit dem MINUS als OPERATOR FÜR SUBTRAKTION in einem Datenbanknamen (was ist wohl das Ergebnis von "lachen" MINUS "garantiert_de_1"??) nichts anfangen kann. Genau an der Stelle wo das MINUS im Namen ist, beschwert sich MySql über die fehlerhafte Verwendung des MINUS.

                            "-garantiert_de_1.ratings" gibt es so nicht in einer datei von mir

                            Naja, wo kommt es denn dann her?

                            $sql = "SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='$id_sent' ";
                            $query = mysql_query($sql)or die(" Error: ".mysql_error()."<br />".$sql);

                              
                            Irgendwas füllt `$tableName`{:.language-php} mit "lachen-garantiert\_de\_1.ratings", wenn du es nicht bist, dann wird es wohl das Script sein, was du da einsetzt (Herzlichen Glückwunsch, Sie haben soeben einen Bug gefunden!). Da du angeblich bereits mit der richtigen Datenbank "lachen-garantiert\_de\_1" verbindest, braucht es den Datenbanknamen nicht nochmal als Präfix für die Tabelle. Du solltest also auch mit "ratings" allein leben können. Aber ich weiss ja nicht, was da sonst noch für Fehler bei dir herumlungern.  
                              
                            Also, du weisst jetzt warum du den Fehler bekommst. (full stop)  
                              
                            Und bitte nicht dauernd TOFU. Zitiere bitte nur die Passagen, die du kommentieren möchtest, wenn du überhaupt etwas kommentieren möchtest.  
                              
                            Ciao, Frank
                            
                            1. okay

                              also ich habe das jetzt alles soweit verstanden. sorry aber ich bin echt ein nob in mysql.

                              ich kann doch aber nicht einfach den dbname weglassen oder? weil denn kommt die nächste fehlermeldung.

                              sorry wenn ich euch damit nerve. ich habe mich vorher noch nie mit mysql beschäftig. aber ich werde das denn wohl mal im angriff nehmen. ich danke euch das ihr mir so schnell hilfe leistet.

                              mfg Marco

                              1. hallo,

                                und wie genau soll ich das jetzt anstellen? ich kann ja nicht einfach irgend etwas löschen. dann gibt es ja den nächsten fehler.

                                mfg Marco

                                1. Ahoi Marco,

                                  und wie genau soll ich das jetzt anstellen? ich kann ja nicht einfach irgend etwas löschen. dann gibt es ja den nächsten fehler.

                                  eigentlich wurde es schon gennant, maskiere deinen DB namen, wie diese
                                  maskierung vorzunehmen ist wurde schon genannt, vornehmen musst du sie
                                  in der config wo du den db-namen in die Variable schreibst.

                                  MfG

                                  1. eigentlich wurde es schon gennant, maskiere deinen DB namen, wie diese
                                    maskierung vorzunehmen ist wurde schon genannt, vornehmen musst du sie
                                    in der config wo du den db-namen in die Variable schreibst.

                                    okay,

                                    wie genau ich das jetzt machen muss weiß ich nicht. aber ich werde denn nochmal alles durch gehen. irgendwann muss ich das ja mal verstehn.

                                    mfg Marco

                                    1. ich habe mir das alles nochmal durch gelesen. verstehe es aber trotzdem nicht wie ich das jetzt genau machen soll. bleibe wohl ein nichts versteher. naja ich danke euch trotzdem für eure hilfe. ihr habt mir sehr geholfen. ich wünsche euch noch einen wunderschönen tag.

                                      mfg Marco

                                      1. Ahoi Marco,

                                        ich habe mir das alles nochmal durch gelesen. verstehe es aber trotzdem nicht wie ich das jetzt genau machen soll.

                                        hier: https://forum.selfhtml.org/?t=157227&m=1022917 steht wo und wie du die variablen mit werten befüllst.

                                        hier: https://forum.selfhtml.org/?t=157227&m=1023003 wie du datenbanknamen maskierst.

                                        also ändere:

                                          
                                        $dbhost        = 'localhost';  
                                         $dbuser        = 'test';  
                                         $dbpass        = '*******';  
                                         $dbname        = 'test';  
                                         $tableName     = 'ratings';  
                                        
                                        

                                        in

                                          
                                        $dbhost        = 'localhost';  
                                         $dbuser        = 'test';  
                                         $dbpass        = '*******';  
                                         $dbname        = '`test`';  
                                         $tableName     = '`ratings`';  
                                        
                                        

                                        MfG

                                      2. hallo,

                                        ich habe es versucht hinzubekommen aber jetzt bekomme ich die meldung hier.

                                        Error: SELECT command denied to user 'lachen-garantiert_de'@'wmphpp11.st2.lyceu.net' for table 'ratings'

                                        kann mir einer sagen was das für ein fehler ist?

                                        mfg Marco

                                        1. Ahoi Marco,

                                          kann mir einer sagen was das für ein fehler ist?

                                          ich vermute du hast auch den User, Host und vll sofgar das pwd maskiert.

                                          MfG

                                          1. Ahoi Daniel,

                                            dein beitrag hat mir geholfen mit den Backlings jetzt geht alles. soviel ärger wegen 4 Backlings, kaum zu glauben. ich danke euch alle die mir dabei geholfen haben. denn kann ich heut abend endlich weiter machen. danke euch allen.

                                            wünsche euch noch einen wunderschönen tag.

                                            mfg Marco

                        2. echo $begrüßung;

                          Du solltest ein [ vor und ein ] hinter dem Tabellennamen www.lachen-garantiert_de_1.ratings machen, also quasi so
                          [www.lachen-garantiert_de_1].[ratings] oder
                          [www.lachen-garantiert_de_1.ratings] oder

                          Nicht bei MySQL. Da gelten die Regeln für Database, Table, Index, Column, and Alias Names und das wären Backticks.

                          vielleicht einfach nur so
                          ratings

                          Wenn man die passende Datenbank bereits gewählt hat, dann reicht in der Tat der Tabellenname.

                          Aber keine Ahnung was  "www.lachen-garantiert_de_1" bedeutet, wie mysql das interpretiert, als die Datenbank oder das Schema ..

                          Es gibt Datenbanken aber keine Schemen.

                          Und sicher, dass deine IDs "id21", "id22" usw. sind und nicht einfach "21", "22"? Wenn die Spalte "id" nämlich numerisch ist, wirst du gleich das nächste Problem bekommen.

                          Nein, Zahlenwerte können unter MySQL auch innerhalb von Stringbegrenzern notiert werden, selbst bei numerischen Feldtypen. Was man allerdings dringend beachten sollte, ist die Benutzereingaben MySQL-gerecht zu maskieren. PHP bietet dafür die Funktion mysql_real_escape_string() an.

                          echo "$verabschiedung $name";

                          1. Moin

                            Und sicher, dass deine IDs "id21", "id22" usw. sind und nicht einfach "21", "22"? Wenn die Spalte "id" nämlich numerisch ist, wirst du gleich das nächste Problem bekommen.

                            Nein, Zahlenwerte können unter MySQL auch innerhalb von Stringbegrenzern notiert werden, selbst bei numerischen Feldtypen. Was man allerdings dringend beachten sollte, ist die Benutzereingaben MySQL-gerecht zu maskieren.

                            Ja, also ich kenn mich bekanntlich mit mysql nicht so wirklich aus.
                            Aber wenn das Feld id numerisch ist und man aber gegen "id22" vergleicht sollte das auch bei mysql zu einem Fehler führen. "id22" als Wert ist ja eher alphanumerisch denn numerisch. ;)

                            Cheers
                            Frank

                            1. echo $begrüßung;

                              Aber wenn das Feld id numerisch ist und man aber gegen "id22" vergleicht sollte das auch bei mysql zu einem Fehler führen. "id22" als Wert ist ja eher alphanumerisch denn numerisch. ;)

                              Nein, das ergibt keine Fehlermeldung. Es findet ein Typecast statt und der macht aus "id22" eine 0. Somit passt eine Abfrage WHERE id = "id22" auf alle 0-Werte.

                              echo "$verabschiedung $name";

                              1. Oha,

                                ich staune. Ist schon ein seltsames Datenbanksystem, vorallem weil es eine reale Zahl (0) draus macht, die wiederum zu Ergebnissen führen kann. Also Fehler gibbet dann nich, aber im Sinne des Erfinders ist es auch ganz sicher nicht. ;)

                                Noch ein Grund für mich so einem Frickelsystem fernzubleiben.

                                Cheers, Frank