WHERE funktioniert nicht richtig

sniffler

Mitglied
Hallo Leute, ich hab mal wieder ein SQL Problem.
Ich möchte,dass auf meiner Seite erst alle Einträge angezeigt werden, man dann aber bestimmte Monate auswählen kann, damit es übersichtlicher ist.

das hier ist mein PHP Code bis jetzt:

PHP:
 if  (isset($_SERVER['QUERY_STRING'])) { 
 $query_termine ="SELECT * FROM termine WHERE zeit>=$aktuellezeit AND monat=$terminmonat ORDER BY zeit ASC";}
 else  {
 $query_termine ="SELECT * FROM termine WHERE zeit>=$aktuellezeit ORDER BY zeit ASC";}

Es wird mir folgender SQL Sytax Fehler angezeigt:

Code:
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 'ORDER BY zeit ASC' at line 1

Danke für die Hilfe!
 
Hallo!

@niggo, müssen nicht..... aber es ist dringend anzuraten.
Durch die Hochkommata wird MySQL "gesagt" wo der Strig beginnt und wo er aufhört.
Wenn der String z.B. Leerzeichen enthält, geht MySQL davon aus dass der String beim ersten Leerzeichen zuende ist und kann mit dem Rest des Strings nichts anfangen.
Ferner sollten Tabellen-/Spaltennamen auch als solche mit Backticks markiert werden, um mögliche Probleme (reservierte Namen) zu vermeiden.

PHP:
if  (isset($_SERVER['QUERY_STRING'])) {  
 $query_termine ="SELECT * FROM `termine` WHERE `zeit`>='$aktuellezeit' AND `monat`='$terminmonat' ORDER BY `zeit` ASC";} 
 else  { 
 $query_termine ="SELECT * FROM `termine` WHERE `zeit`>='$aktuellezeit' ORDER BY `zeit` ASC";}
Der Ordnung halber ziehe ich aber diese Form vor:
PHP:
if  (isset($_SERVER['QUERY_STRING'])) {  
 $query_termine ="SELECT * FROM `termine` WHERE `zeit`>='".$aktuellezeit."' AND `monat`='".$terminmonat."' ORDER BY `zeit` ASC";} 
 else  { 
 $query_termine ="SELECT * FROM `termine` WHERE `zeit`>='".$aktuellezeit."' ORDER BY `zeit` ASC";}
Auch stellt sich die Frage wo die Variablen herkommen und was sie enthalten, ggf. sind sie in mysql_real_escape_string() zu setzen.

Gruss Dr Dau
 
Zurück