Mysql-Abfrage: Where Bedingungen werden ignoriert...

think_deluxe

Grünschnabel
Hallo Ihr's,
habe da mal wieder ein Problem, vll. sehe ich auch den Wald vor lauter Bäumen kaum, aber ich finde den Fehler einfach nicht!!

Evtl. hat ihn ja einer von euch sofort!?

PHP:
$result_list = mysql_query(	"SELECT * FROM ".staffel." WHERE 
									(Confirm = 'Y') 
								AND (EventJahr = '".$eventYear."')
								AND (Swim_Name LIKE '".$such_name."%')
								AND (Swim_Vorname LIKE '".$such_vorname."%')
								OR  (Bike_Name LIKE '".$such_name."%')
								AND (Bike_Vorname LIKE '".$such_vorname."%')
								OR  (Run_Name LIKE '".$such_name."%')
								AND (Run_Vorname LIKE '".$such_vorname."%')
								AND (Staffel LIKE '%".$such_team."%')");

Es werden die Bedingungen Confirm und EventJahr irgnoriert.
Gibt alle Daten aus obwohl EventJahr und Confirm nicht den benötigten Inhalt vorweisen.

Kann es sein, dass es an den anderen "vielen" Bedingungen liegt, habe zuvor noch nicht mit LIKE und sovielen anderen Bedingungen gearbeitet.


Vielen Dank und beste Grüße.
 
schreib das mal folgendermaßen:

PHP:
$result_list = mysql_query(    "SELECT * FROM ".staffel." WHERE  
                                    (Confirm = 'Y')  
                                AND (EventJahr = '".$eventYear."') 
                                AND (Swim_Name LIKE '".$such_name."%') 
                                AND (Swim_Vorname LIKE '".$such_vorname."%') 
                                OR  (Bike_Name LIKE '".$such_name."%') 
                                AND (Bike_Vorname LIKE '".$such_vorname."%') 
                                OR  (Run_Name LIKE '".$such_name."%') 
                                AND (Run_Vorname LIKE '".$such_vorname."%') 
                                AND (Staffel LIKE '%".$such_team."%')")
or die (mysql_error());

Dadurch erhälst du eine Fehlermeldung, die dir eigentlich weiterhelfen sollte. Falls du damit nicht weiter kommst, kannst du sie ja hier posten.
 
Hi Slin,
danke für die schnelle Antwort, aber leider spuckt er keine Fehlermeldung aus.

Es läuft alles ohne Fehler durch und die Ergebnisse werden angezeigt, leider auch die, die nicht angzeigt werden sollen... sprich: Confirm = 'N' bzw. EventJahr = '2011' ($eventYear = "2012").
 
Zuletzt bearbeitet:
Dir ist aber schon klar, dass Du 3 verschiedene Bedingungen in deiner WHERE-Klausel hast oder?

PHP:
"Confirm = 'Y' 
AND EventJahr = '".$eventYear."'
AND Swim_Name LIKE '".$such_name."%' 
AND Swim_Vorname LIKE '".$such_vorname."%'"
oder
PHP:
"Bike_Name LIKE '".$such_name."%' 
AND Bike_Vorname LIKE '".$such_vorname."%'"
oder
PHP:
"Run_Name LIKE '".$such_name."%')  
AND (Run_Vorname LIKE '".$such_vorname."%')  
AND (Staffel LIKE '%".$such_team."%')"

Deine Klammern sind auch völlig Sinnlos.

Optisch getrennt sähe dein Query so aus:
PHP:
$strQuery = <<<QUERY
    SELECT
        *
    FROM
        staffel
    WHERE
    (
        Confirm = 'Y'
        AND EventJahr = '{$eventYear}'
        AND Swim_Name LIKE '{$such_name}%'
        AND Swim_Vorname LIKE '{$such_vorname}%'
    )
    OR
    (
        Bike_Name LIKE '{$such_name}%'
        AND Bike_Vorname LIKE '{$such_vorname}%'
    )
    OR
    (
        Run_Name LIKE '{$such_name}%'
        AND Run_Vorname LIKE '{$such_vorname}%'
        AND Staffel LIKE '%{$such_team}%'
    );
QUERY;
Es muss nur einer der 3 Bedingungsblöcke zutreffen.

Und merke: AND bindet stärker wie OR!

Gruß
 
Ich danke euch Beiden... Raisch hat mir den Fehler aufgezeigt.

PHP:
mysql_query("SELECT * FROM ".staffel."							
				WHERE
				(
					Confirm = 'Y'
					AND 
					EventJahr = '{$eventYear}'
				)
				AND 
				(
					Swim_Name LIKE '".$such_name."%'
					OR
					Bike_Name LIKE '".$such_name."%'
					OR
					Run_Name LIKE '".$such_name."%'
				)
				AND  
				(
					Swim_Vorname LIKE '".$such_vorname."%'
					OR
					Bike_Vorname LIKE '".$such_vorname."%'
					OR
					Run_Vorname LIKE '".$such_vorname."%'
				)");

so sieht die gwünschte Abfrage aus, also deutlich anders als vorher. :-)
Ich mach erstmal eine Pause.
 
Zurück