2012-08-31 123 views
1

这是一个小例子,它给了我一个MySQL语法错误。 Connect.php连接到正确的数据库,可以与其他项目和代码一起使用。我知道connect.php中的代码是正确的。它给我一个关于的MySQL语法错误。它没有给出比这更详细的信息:MYSQL PHP脚本抛出语法错误

你的SQL语法错误;检查手册中 对应于你的MySQL服务器版本正确的语法使用 附近“键WHERE key =” XXXXXXXXXXXX“”在1号线

我把这个代码小样本从主项目,它仍然会抛出错误。

<?php 
    require "connect.php";   
    $keyCheck = mysql_query("SELECT * FROM keys WHERE `key`='".$_POST['betakey']."'" , $con); 

    if (!$keyCheck) { 
     echo mysql_error(); 
     exit; 
    } else { 
     $keyRows = mysql_num_rows($keyCheck); 
    if ($keyRows == 0) { 
     echo "This key is invalid!"; 
     exit; 
    } 
?> 

编辑:我得到的管理员重命名表,你们帮我解决一些潜在的安全隐患。

+0

尝试更改“至”引号,其中键= –

+0

您是否正在清理输入内容? –

+1

这就是为什么PHP被认为是丑陋的以及如何编写带有安全漏洞的代码的一个很好的例子 - 请尝试使用PDO来帮助自己避免被黑客入侵。 –

回答

6

我很肯定keys是一个保留字。无论如何,你总是应该将数据库,表和列名称反引号。不仅仅是“有时”,就像你在这个例子中一样。总是。

Source

+0

+1,但你应该包括一个例子。 –

+0

如果不使用保留字**,那么在构建数据库时不要使用反引号来纠正它,这样会更好。 –

+1

感谢您的编辑Josh - 只需几秒就可以击败我XD –