PHP [MYSQL] Error SQL-Syntax?

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Ich glaub ich sollte alles Aufgeben,

denn ich scheiter schon an der normalen SQL-Syntax in meiner Abfrage:
PHP:
connect();
//Rechte der Benutzer im Menü einstellen
$sql_get_rechte = mysql_query("SELECT autor,mod,verstoss,admin FROM user
						WHERE userid='1'
						LIMIT 1
						")or die(mysql_error());

Der Fehler dazu ist:
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 'verstoss,admin FROM user WHERE userid='1' LIMIT 1' at line 1

Findet ihr den Fehler? Der ist bestimmt voll simpel oder so und ich checks net :D
 
Schon mal die ' ' da rausgenommen?
 
Die Spalten gibts schon?
Sonst, ich finde es (aus C/C++-Sicht) immer riskant, einen Zeilenumbruch in einer Konstanten zu machen.
Ich würde es so schreiben:
Code:
"SELECT autor,mod,verstoss,admin FROM user ".
                    " WHERE userid='1' ".
                    " LIMIT 1 "

Ich hab grad mal nach Limit und MySQL gegoogelt, scheinbar muss du immer die Startaddresse angeben, also "LIMIT 0,1". Vielleicht funktionierts ja damit.
 
Muss man net, müsste auch so gehen.
 
Der Spaltenname "mod" ist ein reserviertes Wort, da es sich dabei um eine Restwertfunktion handelt.
Benenn die Spalte um, dann funktioniert Deine Abfrage :).
 
hurga_gonzales schrieb:
Der Spaltenname "mod" ist ein reserviertes Wort, da es sich dabei um eine Restwertfunktion handelt.
Benenn die Spalte um, dann funktioniert Deine Abfrage :).

Gut das ist die Lösung für mein Problem. Dankeschön! :)
Da hätte ich auch ändern können was ich will ich hätte immer nen Fehler gehabt :D
Aber schon komisch das es nicht als string bewertet wird wenn ich das in ' ' setze

mod hab ich einfach in moderator geändert.
 
Schön, dass es nun hinhaut.

Du hättest auch "mod" in Anführungszeichen und diese Anführungszeichen escapen können, aber generell sollte man natürlich keine Namen von Datenbankfunktionen als Spaltennamen verwenden ;).

Übrigens: mySQL Syntaxfehler zeigen die Fehlerposition immer recht genau an, nämlich mit dem ersten Zeichen nach der Stelle, wo der Fehler auftaucht. In Deinem Fall

"near 'verstoss,admin FROM user WHERE userid='1' LIMIT 1' at line 1"
 
noch einfacher bzw. sauberer wäre es backticks zu benutzen:

SELECT `autor`,`mod`,`verstoss`,`admin` FROM user WHERE userid='1' LIMIT 1

greeTz
waYan
 
Zurück
Oben