2016-03-22 51 views
0

基本上我有一个注册页面,您可以通过串口注册一个游戏账号。我检查键入的键是否在数据库中。PHP- MYSQL语法错误

$keyquery = mysql_query("SELECT * FROM keys WHERE key = '$_POST[key]' AND used = '$used'") or die(mysql_error()); 
if(!$row = mysql_fetch_array($keyquery) or die(mysql_error())) 
{ 
//key works 
} 
else 
{ 
//key doesnt work 
} 

现在,如果即时通讯尝试注册一个帐户,我得到一个错误。

您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近“键,其中关键=‘1234’,并用于=” 0" 线1

+5

'keys'和'key'是[保留字(https://dev.mysql.com/doc/refman/5.5/en/keywords.html)。围绕它们 – ImClarky

+1

这里没有提到巨大的SQL注入的可能性...... –

+1

你可能会看看你的代码,并使用'mysql_real_escape_string'作为'$ _POST',例如'mysql_real_escape_strin克($ _ POST [ “键”])'。您当前的代码完全容易受到SQL注入的影响 – Jer

回答

4

key是在MySQL中的保留字,你应该正确的语法手册与反引号`转义。

$keyquery = mysql_query("SELECT * FROM `keys` WHERE `key` = '$_POST[key]' AND `used` = '$used'") or die(mysql_error());