grdllg: Was ist am Query falsch?

Wieso krieg ich diese Fehlermeldung

Unknown column 'Anglo' in 'where claue'

bei dieser Abfrage:

SELECT  
* FROM hunde WHERE `alter` >= 7 AND `alter` <= 9 AND `rasse` = Anglo AND preis >= 4001 AND preis <= 8000

? In diesem Fall ist doch Rasse die Spalte und Anglo der Wert für die Spalte!?
Schönen Abend

  1. Hallo,

    Wieso krieg ich diese Fehlermeldung

    Unknown column 'Anglo' in 'where claue'

    bei dieser Abfrage:

    SELECT

    • FROM hunde WHERE alter >= 7 AND alter <= 9 AND rasse = Anglo AND preis >= 4001 AND preis <= 8000
    
    >   
    > ? In diesem Fall ist doch Rasse die Spalte und Anglo der Wert für die Spalte!?  
      
    nö ... in diesem fall ist:  
    alter ein wert,  
    alter ein wert und  
    rasse ein wert.  
      
      
    MfG. Christoph Ludwig
    
    -- 
    Wo die Sprache aufhört, fängt die Musik an...  
    Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)  
      
    Go to [this](http://home.arcor.de/minicrispie/index.html) 
    
    1. nö ... in diesem fall ist:
      alter ein wert,
      alter ein wert und
      rasse ein wert.

      Stimmt, macht mehr Sinn. Hab das ganze jetzt mit Hochkommas versehen, jetzt gibts diese Fehlermeldung:

      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 'alter >= 2 AND alter <= 5 AND rasse = '.Anglo.' AND preis' at line 1

      Mein Query:

      SELECT * FROM hunde WHERE alter >= 2 AND alter <= 5 AND rasse = '.Anglo.' AND preis >= 4001 AND preis <= 8000

      1. Hallo,

        Stimmt, macht mehr Sinn. Hab das ganze jetzt mit Hochkommas versehen, jetzt gibts diese Fehlermeldung:

        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 'alter >= 2 AND alter <= 5 AND rasse = '.Anglo.' AND preis' at line 1

        Mein Query:

        SELECT * FROM hunde WHERE alter >= 2 AND alter <= 5 AND rasse = '.Anglo.' AND preis >= 4001 AND preis <= 8000

        das ganze machst du sicherlich mit PHP ...
        1. nur ne schönheitssache, aber nimm für text immer LIKE ;)
        2. Anglo ist bestimmt eine Variable, wenn ja, dann zeichne sie auch so aus. wenn nein, dann mach die punkte weg.

        MfG. Christoph Ludwig

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
        Go to this
        1. das ganze machst du sicherlich mit PHP ...

          1. nur ne schönheitssache, aber nimm für text immer LIKE ;)
          2. Anglo ist bestimmt eine Variable, wenn ja, dann zeichne sie auch so aus. wenn nein, dann mach die punkte weg.

          MfG. Christoph Ludwig

          Autsch... stimmt, die Variable hab ich nicht ganz richtig ausgewiesen. Trotzdem verschwindet die Meldung leider nicht... :|
          Nur die Punkte (und ich geb gleich nochmal die Abfrage mit):

          SELECT * FROM hundee WHERE alter >= 2 AND alter <= 6 AND rasse LIKE Anglo AND preis >= 4001 AND preis <= 8000  
            
          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 'alter >= 2 AND alter <= 6 AND rasse LIKE Anglo AND preis >' at line 1
          

          Auf line 1 steht nur <?php
          hilfeeee wo liegt der verdammte Fehler?!
          Herzlichen Dank für die schnellen Antworten

          1. Hallo,

            Autsch... stimmt, die Variable hab ich nicht ganz richtig ausgewiesen. Trotzdem verschwindet die Meldung leider nicht... :|
            Nur die Punkte (und ich geb gleich nochmal die Abfrage mit):

            [code lang=php]SELECT * FROM hundee WHERE alter >= 2 AND alter <= 6 AND rasse LIKE Anglo AND preis >= 4001 AND preis <= 8000

            du musst dir auch durchlesen, was andre schreiben:
            WAS willst du:
            das Anglo eine VARIABLE( $Anglo ) ODER
            ein STRING( "... 'Anglo' ... ") ist ?

            entscheide dich.

            Autsch...

            das sag ich mir auch grad ;)

            MfG. Christoph Ludwig

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
            1. du musst dir auch durchlesen, was andre schreiben:
              WAS willst du:
              das Anglo eine VARIABLE( $Anglo ) ODER
              ein STRING( "... 'Anglo' ... ") ist ?

              entscheide dich.

              Autsch...
              das sag ich mir auch grad ;)

              MfG. Christoph Ludwig

              Habe gerade die Spalte von Alter in Age umbenannt -> neues Problem weg, altes Problem wieder da :| Also Anglo ist ein String von der Variable $rasse. Das ganze füg ich so ein:

              $sql = "SELECT * FROM hunde WHERE age >= 3 AND age <= 8 AND rasse LIKE '.$anglo.' AND preis >= 4001 AND preis <= 8000";

              Hab ich mal wieder was übersehen?

              SELECT * FROM hunde WHERE age >= 3 AND age <= 8 AND rasse LIKE Anglo AND preis >= 4001 AND preis <= 8000  
                
              Unknown column 'Anglo' in 'where clause'
              
              1. Hi,

                $sql = "SELECT * FROM hunde WHERE age >= 3 AND age <= 8 AND rasse LIKE '.$anglo.' AND preis >= 4001 AND preis <= 8000";

                Hab ich mal wieder was übersehen?

                SELECT * FROM hunde WHERE age >= 3 AND age <= 8 AND rasse LIKE Anglo AND preis >= 4001 AND preis <= 8000

                Unknown column 'Anglo' in 'where clause'

                  
                Die Meldung kann nicht kommen, wenn du wirklich oben stehende Query an die DB abgesendet haettest - also hast du das wohl nicht getan.  
                  
                MfG ChrisB  
                  
                
                -- 
                „This is the author's opinion, not necessarily that of Starbucks.“
                
                1. Die Meldung kann nicht kommen, wenn du wirklich oben stehende Query an die DB abgesendet haettest - also hast du das wohl nicht getan.

                  MfG ChrisB

                  danke für die antwort. problem gelöst

              2. Hallo,

                $sql = "SELECT * FROM hunde WHERE age >= 3 AND age <= 8 AND rasse LIKE '.$anglo.' AND preis >= 4001 AND preis <= 8000";

                wenn du einen string mit einem hochkomma anfängst musst du ihn auch so beenden.

                "SELECT ... WHERE rasse LIKE 'test' ...;"

                so soll das abgesendet werden. oder?
                also:

                "SELECT ... WHERE rasse LIKE '" . $Anglo . "' ...;"

                basta!

                MfG. Christoph Ludwig

                --
                Wo die Sprache aufhört, fängt die Musik an...
                Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
                Go to this
          2. Hi,

            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 'alter >= 2 AND alter <= 6 AND rasse LIKE Anglo AND preis >' at line 1[/code]

            Auf line 1 steht nur <?php
            hilfeeee wo liegt der verdammte Fehler?!

            Damit ist selbstverstaendlich die Zeile #1 des SQL-Statements, dass du an die Datenbank gesendet hast, gemeint.

            Und jetzt lies den Link bzgl. reservierter Woerter in MySQL, den ich dir gepostet habe.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
        2. Hi,

          1. nur ne schönheitssache, aber nimm für text immer LIKE ;)

          Wozu? LIKE ist dann sinnvoll, wenn mit einem Suchmuster verglichen wird. Für Literale ist LIKE nicht notwendig.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      2. Hi,

        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 'alter >= 2 AND alter <= 5 AND rasse = '.Anglo.' AND preis' at line 1

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

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
    2. Hi,

      SELECT

      • FROM hunde WHERE alter >= 7 AND alter <= 9 AND rasse = Anglo AND preis >= 4001 AND preis <= 8000
      
      > nö ... in diesem fall ist:  
      > alter ein wert,  
        
      Falsch. alter und rasse sind hier Spaltennamen. Du verwechselst ` und '.  
        
      cu,  
      Andreas
      
      -- 
      [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
      [O o ostern ...](http://ostereier.andreas-waechter.de/)  
        
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
      
      
      1. Hallo,

        Falsch. alter und rasse sind hier Spaltennamen. Du verwechselst ` und '.

        ehrlich? ... ach mist. ist aber trotzdem sinnlos, ` zu setzen, weil es unnötige zeichen im query sind(sofern der spaltenname keine sonderzeichen enthält)

        MfG. Christoph Ludwig

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
        Go to this
        1. Hallo,

          Falsch. alter und rasse sind hier Spaltennamen. Du verwechselst ` und '.

          ehrlich? ... ach mist. ist aber trotzdem sinnlos, ` zu setzen, weil es unnötige zeichen im query sind(sofern der spaltenname keine sonderzeichen enthält)

          im speziellen Fall hier, eine Spalte trägt den ungünstigen Namen

          alter

          ist es notwendig, den Spaltennamen gemäß dem verwendeten SQL-Dialekt zu quoten.

          Freundliche Grüße

          Vinzenz

          1. Hallo,

            im speziellen Fall hier, eine Spalte trägt den ungünstigen Namen

            alter

            ist es notwendig, den Spaltennamen gemäß dem verwendeten SQL-Dialekt zu quoten.

            ja ok, das ist ein reserviertes wort. aber bei nicht-reservierten wörten würde das von mir geschriebene zutreffen.

            MfG. Christoph Ludwig

            --
            Wo die Sprache aufhört, fängt die Musik an...
            Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
            Go to this
            1. echo $begrüßung;

              [...] aber bei nicht-reservierten wörten würde das von mir geschriebene zutreffen.

              ist aber trotzdem sinnlos, ` zu setzen, weil es unnötige zeichen im query sind

              Es gibt einige im Prinzip sinnlose/überflüssige Dinge, die aber das Lesen eindeutiger machen. Mitunter setzt man Klammern, obwohl diese aufgrund der Operatorrangfolge nicht notwendig sind, um zu zeigen, was man beabsichtigt hatte. Auch das Verwenden von ` ist eine Art von meist überflüssiger eindeutiger Kennzeichnung. Für den Parser ist es ein Mehraufwand, der im Grundrauschen untergeht. Im verstehenden Lesen und Analysieren des Geschriebenen ist ein Mensch deutlich langsamer. Der Nachteil des Überflüssigen ist oft ein nicht zu unterschätzender Vorteil bei der Wartung.

              echo "$verabschiedung $name";

              1. Hi,

                Auch das Verwenden von ` ist eine Art von meist überflüssiger eindeutiger Kennzeichnung. Für den Parser ist es ein Mehraufwand, der im Grundrauschen untergeht.

                Ist es wirklich ein Mehraufwand?
                Immerhin weiß der Parser bei Verwendung von `` sofort, daß es sich um einen Spaltennamen handeln muß und nicht auch ein Keyword sein könnte, er kann sich also sparen, die Liste der keywords zu durchsuchen ...

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hi,

    Wieso krieg ich diese Fehlermeldung

    Unknown column 'Anglo' in 'where claue'

    Weil du eine Spalte namens Anglo ansprichst, aber keine solche hast.

    ? In diesem Fall ist doch Rasse die Spalte und Anglo der Wert für die Spalte!?

    http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“