Hvad fanden er der galt?!

Tags:    php

Jeg har lavet det her stykke kode, som er en del af et større bruger system. Jeg har lavet stortset samme kode til andre projekter før, men nu vil det simpelthen bare ikke du?!

mysql_query("UPDATE users SET real = '".$_POST['real']."' WHERE screen='".$_SESSION['screen']."'");

echo 'done';

Jeg kan forsikre jer om, formularen går igennem til denne funktion. (den skriver nemlig 'done!', some jeg har sat ind for at tjekke)

Kan det have noget at gøre med, at det her projekt kører på frac.dk? jeg har nemlig aldrig brugt UPDATE funktionen på frac før...

Jeg håber du kan spotte min fejl.



7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
tror dit problem er at real er reserveret ord i mysql
http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html



Yup, "real" er reserveret...
brug hellere mere unikke navne til dine kollonner. f.eks. "real_name", eller "user_rname" etc.



Prøv at ændre den query til:
Fold kodeboks ind/udKode 


`-tegnet omkring rækkenavnene gør at MySQL skældner mellem rækkenavne og reserverede ord.

En MySQL query skelner ikke mellem store og små bogstaver, man bruger kun store bogstaver til reserverede ord, for at gøre det lettere at læse... MySQL er ligeglad.



well prøv lige:
mysql_query("UPDATE users SET real = '".$_POST['real']."' WHERE screen='".$_SESSION['screen']."'") or die(mysql_error());

og så post hvilken fejl du får :)



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 'real = 'Andy Borglind1' WHERE screen='andy'' at line 1

hmmm... nu kan jeg se at den prøver at lave brugernavnet om til andy' istedet for andy. Noget du har en løsning til?



nej det er bare fordi den laver '' om fejlen. min fejl



selvom nicks løsning nok vil virke vil jeg stadig anbefale dig at ændre real til et andet ord, da det er en dårlig vane at bruge reserverede ord i den sammenhæng. Det kunne give dig problemer hvis du en dag skifter platform.



t