MYSQL PHP脚本抛出语法错误

MYSQL PHP脚本抛出语法错误,php,mysql,syntax,Php,Mysql,Syntax,下面是一个小代码示例,它给了我一个MySQL语法错误。php正在连接到正确的数据库,可以与其他项目和代码一起使用。事实上,我知道connect.php中的代码是正确的。它给了我一个关于MySQL的语法错误。没有比这更详细的内容了: 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行的“keys WHERE key=”XXXXXXXXXX附近 我从主项目中提取了这个小代码示例,但它仍然抛出错误 <?php require "connect.p

下面是一个小代码示例,它给了我一个MySQL语法错误。php正在连接到正确的数据库,可以与其他项目和代码一起使用。事实上,我知道connect.php中的代码是正确的。它给了我一个关于MySQL的语法错误。没有比这更详细的内容了:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行的“keys WHERE key=”XXXXXXXXXX附近

我从主项目中提取了这个小代码示例,但它仍然抛出错误

<?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;
    }
?>
编辑:我让管理员重新命名了这个表,你们帮我修复了一些潜在的安全隐患。

我相当肯定keys是一个保留字。在任何情况下,都应该始终将数据库、表和列名括在反勾中。不只是像你在这个例子中有的时候。总是

.

我相当肯定keys是一个保留字。在任何情况下,都应该始终将数据库、表和列名括在反勾中。不只是像你在这个例子中有的时候。总是


.

尝试将'to`quotes where key=更改为'where key=是否正在清理输入?这是一个很好的例子,说明了为什么PHP被认为是丑陋的,以及如何编写带有安全漏洞的代码,请-尝试使用PDO帮助自己免受黑客攻击。不,不是真的。是的,他有一个巨大的安全漏洞,但相信我,我在ASPX工作,人们也直接将查询字符串变量应用到他们的SQL语句中。PHP的问题不在于它的“丑陋”,而是很多人在自己的网站上使用它,告诉他们嘿,如果你只是在SQL语句中插入这个变量,你可以让你的东西完全可重用尝试将'to'引号改为'key=你正在清理你的输入吗?这是一个很好的例子,说明了为什么PHP被认为是丑陋的,以及如何编写带有安全漏洞的代码,请-试着使用PDO来帮助自己免受黑客攻击。不,不是真的。是的,他有一个巨大的安全漏洞,但相信我,我在ASPX工作,人们也直接将查询字符串变量应用到他们的SQL语句中。PHP的问题不在于它的“丑陋”,而是很多人在自己的网站上使用它,告诉他们嘿,如果你只是在SQL语句中插入这个变量,您完全可以使您的内容可重用如果在构建数据库时不使用保留字,而不是使用反勾号来纠正它,那会更好。@N.B.这有时会给我带来一些问题,但我不会说完全不要使用它们。:p小心点。这让我对mysql查询中的所有内容都做了回溯,现在我的代码更好/更安全了@ThomasClayson——就我个人而言,我尽量避免使用那些我并不完全熟记的保留词,我只是觉得用个人喜好来工作很糟糕。我同意,反勾号是一种很好的安全方法,但是-使用保留字会让你想到反勾号,如果你忘记了反勾号一次,你就会对查询在看起来很好的情况下为什么不起作用而挠头@注意,是的,我已经做过很多次了!试图找出问题所在。Mac电脑上的回跳并不太糟糕,但在Windows键盘上却很糟糕!我想我们没有一个专用的哈希键,所以它并不都是好的!构造数据库时最好不要使用保留字,而不要使用反勾号来纠正它。@N.B.这有时会给我带来一些问题,但我不会说完全不要使用它们p小心点。这让我对mysql查询中的所有内容都做了回溯,现在我的代码更好/更安全了@ThomasClayson——就我个人而言,我尽量避免使用那些我并不完全熟记的保留词,我只是觉得用个人喜好来工作很糟糕。我同意,反勾号是一种很好的安全方法,但是-使用保留字会让你想到反勾号,如果你忘记了反勾号一次,你就会对查询在看起来很好的情况下为什么不起作用而挠头@注意,是的,我已经做过很多次了!试图找出问题所在。Mac电脑上的回跳并不太糟糕,但在Windows键盘上却很糟糕!我想我们没有一个专用的哈希键,所以它并不都是好的!