1
$result2 = mysql_query("INSERT INTO mazegames
        (game,savename,player,playerimg,level,gold,keys,puzzle,posX,posY,map)
    VALUES
        ('$game','$Save','$player','$playerimg','$level','$gold','$keys','$puzzle','$x','$y','$map')",$db);

I keep getting this error:

Error saving Johnson game. (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 'keys,puzzle,posX,posY,map)
VALUES
('maze','Johnson','Patrick','eddie' at line 2 -- 'maze','Johnson','Patrick','eddie.gif','1','0','0','fail','17','13','w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,n,g,g,g,w,g,g,m,g,g,g,m,w,g,g,g,g,g,w,w,w,w,w,w,w,w,g,w,g,g,w,g,g,g,g,g,g,g,w,g,w,g,g,g,w,w,w,w,w,w,w,w,g,g,w,m,w,m,w,w,w,d,w,w,g,g,w,w,g,g,w,w,w,w,w,w,w,w,g,g,g,w,w,w,g,g,g,g,g,g,g,g,w,g,m,g,w,w,w,w,w,w,w,w,g,n,g,g,d,g,g,g,g,g,g,g,g,g,w,g,g,g,w,w,w,w,w,w,w,w,g,g,g,w,w,g,g,w,w,g,w,w,g,g,w,g,w,g,w,w,w,w,w,w,w,w,g,g,w,m,w,g,g,w,m,g,m,w,g,g,w,g,g,w,w,w,w,w,w,w,w,w,g,n,g,g,w,g,g,w,g,g,g,w,g,g,w,m,g,a,w,w,w,w,w,w,w,w,g,w,w,w,w,g,w,w,w,g,w,w,w,g,w,w,w,w,w,w,w,w,w,w,w,w,g,g,g,g,g,j,g,g,g,i,g,g,g,j,g,g,g,g,w,w,w,w,w,w,w,w,w,w,w,w,w,g,w,w,w,g,w,w,w,g,w,w,w,g,w,w,w,w,w,w,w,w,n,g,n,m,w,g,g,w,m,g,m,w,g,g,w,g,g,g,w,w,w,w,w,w,w,w,g,g,w,g,w,g,g,w,g,g,g,w,g,g,w,g,g,g,w,w,w,w,w,w,w,w,g,w,g,g,w,g,g,g,w,w,w,g,g,g,w,w,g,g,w,w,w,w,w,w,w,w,k,g,g,g,w,k,g,g,g,g,g,g,g,k,w,g,g,g,w,w,w,w,w,w,w,w,w,w,w,g,g,w,w,w,w,k,w,w,w,w,w,g,g,g,w,w,w,w,w,w,w,w,m,m,w,g,g,g,g,g,g,w,m,g,g,g,d,g,g,g,w,w,w,w,w,w,w,w,g,m,w,w,w,w,g,g,g,w,g,g,g,g,w,g,w,g,w,w,w,w,w,w,w,w,g,g,d,s,d,d,g,g,g,w,g,g,g,w,g,g,g,g,w,w,w,w,w,w,w,w,b,w,w,w,w,w,g,g,w,g,g,g,w,g,g,w,g,g,w,w,w,w,w,w,w,w,x,w,w,w,w,w,m,g,c,g,g,w,a,g,w,g,g,e,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w')

I have increased the size of the 'map' column to VARCHAR (10000) because I thought I was overrunning the limit of 1000 that I had it set at, but I still get the error.

Stephen Ostermiller
  • 23,933
  • 14
  • 88
  • 109
Patrick
  • 53
  • 7

2 Answers2

6

KEYS is a mysql reserved word. So you need to put backticks around it:

gold, `keys`,puzzle
zerkms
  • 249,484
  • 69
  • 436
  • 539
  • As a general rule, always put backticks around database, table and field names, to identify them as such. – Niet the Dark Absol Sep 06 '12 at 22:02
  • @Kolink: personally I do that only for reserved words, as long as from my personal point of view they make the queries less readable and maintainable – zerkms Sep 06 '12 at 22:03
0

keys is a reserved word, like SELECT, LIMIT or something else. The correct usage is adding backticks around each field so SQL identifies it.

$result2 = mysql_query("INSERT INTO mazegames
    (`game`,`savename`,`player`,`playerimg`,`level`,`gold`,`keys`,`puzzle`,`posX`,`posY`,`map`)
VALUES
    ('$game','$Save','$player','$playerimg','$level','$gold','$keys','$puzzle','$x','$y','$map')",$db);
Jorge Fuentes González
  • 11,568
  • 4
  • 44
  • 64