Mysql problem

Tags:    php

Hej

Jeg har et lille problem med noget MySQL og PHP.
Jeg er igang med et lille program som jeg planlægger at lægge ud på min hjemmeside.

Problemet er så at brugerne skal kunne oprette en bruger men når jeg prøver at få sat dataene ind i min database opstår der en fejl og den udskriver følgende:

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 'select) VALUES ('43', '67','cbf','d926d7bb9ccf46fc04a61bd65d87b9b3','ugepenge','' at line 1

Her er koden:

Fold kodeboks ind/udKode 


jeg er sikker på at koden her kan virke lidt overskuelig men jeg har prøvet at give den kommentarer så godt jeg nu kan.

jeg mener at problemet er opstået her:
Fold kodeboks ind/udKode 


For hvis jeg fjerner select og $select fra koden virker det helt fint.

Jeg er ikke helt sikker på det med point så det kunne være rart hvis nogen ville give mig en lille introduktion i det.

P.S jeg har fået hjælp fra artiklen Fra Begynder Til Login




Det er fordi select er et resveret ord i mysql ("SELECT * FROM table"), du kan navngive dine felter så de hedder ugepenge_ugepenge, ugepenge_brugernavn osv. (ugepenge_select)

På den måde er du sikker på at du ikke bruger et reseveret ord.

Du kan se alle reserverede ord her:
http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

Eller du kan tilføje ' til din insert så det ser således ud:
mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,'select') VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());


Mht. point så kig her http://www.udvikleren.dk/AboutUp.aspx



Indlæg senest redigeret d. 04.03.2010 21:32 af Bruger #11386
Eller du kan tilføje ' til din insert så det ser således ud:
mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,'select') VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());


Ikke helt korrekt. Det er backticks "`" og ikke singlequotes "'" som kan sættes om kolonnenavne. Altså:

mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,`select`) VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());



Det er fordi select er et resveret ord i mysql ("SELECT * FROM table"), du kan navngive dine felter så de hedder ugepenge_ugepenge, ugepenge_brugernavn osv. (ugepenge_select)

På den måde er du sikker på at du ikke bruger et reseveret ord.

Du kan se alle reserverede ord her:
http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

Eller du kan tilføje ' til din insert så det ser således ud:
mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,'select') VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());


Mht. point så kig her http://www.udvikleren.dk/AboutUp.aspx


Ok tak det vil jeg prøve :)

Til Robert Larsen
ok tak



Indlæg senest redigeret d. 06.03.2010 16:12 af Bruger #15736
Eller du kan tilføje ' til din insert så det ser således ud:
mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,'select') VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());


Ikke helt korrekt. Det er backticks "`" og ikke singlequotes "'" som kan sættes om kolonnenavne. Altså:

mysql_query("INSERT INTO ugepenge (ugepenge,penge,brugernavn,password,ugelomme,`select`) VALUES ('$ugepenge', '$penge','$brugernavn','$password','$ugelomme','$select')") OR DIE(mysql_error());


Jeg har ikke kodet PHP i flere år nu så det var rent gætteværk, men tak fordi du rettede på mig :)



Indlæg senest redigeret d. 06.03.2010 20:17 af Bruger #11386
t