where sowieso=1 liefert 1 und 2

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • where sowieso=1 liefert 1 und 2

    Hallo :-)

    ich wende mich wieder mit einem Problem an euch, das ich nicht verstehe. In der vorliegenden Tabelle gibt es u.a. eine Spalte namens user_id. Diese enthält 1 oder 2 als Wert für deutsch oder englisch. Nun lautet meine Abfrage (die eine rudimentäre Suchfunktion darstellt)

    PHP-Code:
    $sql_resultmysql_query("SELECT `id` , `vorname` , `nachname` , `grade`
    FROM  `user_table` WHERE `user_id` = 1
    AND  `nachname` LIKE  '%
    $search%' 
    OR `vorname` LIKE  '%
    $search%' 
    OR `grade` LIKE  '%
    $search%' 
    ORDER BY nachname ASC LIMIT 0 , 30"  
    ,$db); 
    Zurückgeliefert werden aber alle sowohl Einträge mit 1 oder 2 als user_id obwohl ich nur alle mit einer 1 im feld user_id haben möchte...

    Hat jemand eine Ahnung woran das liegen könnte?

    Danke!

    tm

  • #2
    Re: where sowieso=1 liefert 1 und 2

    Original geschrieben von Typomaniac

    Hat jemand eine Ahnung woran das liegen könnte?
    Ja, es liegt an der Prioritätsbehandlung der logischen Operatoren; setze richtig die Klammer ein, dann bekommst du auch richtiges Ergebnis.

    Kommentar


    • #3
      ok vielen dank schon mal – könntest Du mir auch sagen wo? Von alleine finde ichs nämlich nicht raus...

      danke!

      tm

      Kommentar


      • #4
        finde mal den Unterschied zwischen:

        A OR B AND C OR D

        und

        (A OR B) AND (C OR D)

        dann weisst du's.

        Kommentar


        • #5
          Oder schaue mal die Rangordnung der Operatoren an
          Gruss
          H2O

          Kommentar


          • #6
            also ich hab jetzt so ziemlich viel durchprobiert aber ich komme zu keinem für alle Fälle funktioniernden Ergebnis. Wenn sich jemand »erbarmen« würde und das anhand meiner Abfrage demonstrieren würde, bin ich sehr dankbar...

            viele Grüße,

            tm

            Kommentar


            • #7
              Allzuviel kannst du nicht probiert haben. Vermutlich suchst du das:
              PHP-Code:
              $sql "
                  SELECT 
                      id, 
                      vorname, 
                      nachname, 
                      grade
                  FROM  
                      user_table 
                  WHERE 
                      user_id = 1
                  AND(  
                          nachname LIKE  '%
              $search%' 
                      OR 
                          vorname LIKE  '%
              $search%' 
                      OR 
                          grade LIKE  '%
              $search%'
                  ) 
                  ORDER BY 
                      nachname ASC 
                  LIMIT 0, 30"
              ;
              $sql_resultmysql_query($sql) or exit(mysql_error()); 
              EDIT:
              Das wird allerdings im Normalfall allerdings kein Resultat bringen. Falls es nicht das ist, musst du halt schon mal sagen, was du willst.
              Zuletzt geändert von H2O; 13.06.2008, 08:46.
              Gruss
              H2O

              Kommentar

              Lädt...
              X