简单查询中的 MySQL 语法错误


MySQL syntax error in a simple query

我这里有一点代码,我完全迷失了,因为我在第 1 行的"唯一 = 'dD0231q' LIMIT 1' 附近收到语法错误。这可能是一件非常简单的事情,但我似乎对自己的错误视而不见。

 $unique = $_GET["unique"];
 $results = $mysqli->query("SELECT * FROM written WHERE unique = '$unique' LIMIT 1

UNIQUE是MySQL中的一个关键字。如果您想将其用作表列名称,请将其括在 ' (反引号) 引号中,如下所示:

SELECT * FROM written WHERE `unique` = '$unique' LIMIT 1

另外,请不要只是将您从用户那里收到的值直接放入您的查询中。这就是SQL注入的发生方式。而是使用预准备语句。

UNIQUE是一个MySQL保留字 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

要么用刻度包装列,要么重命名它。

SELECT * FROM written WHERE `unique` = '$unique'

该错误说明了一切:

"唯一"附近的语法错误


另外,关于SQL注入,这是你开放的东西,将mysqli与预准备语句一起使用,或者将PDO与预准备语句一起使用,它们要安全得多


只是为了论证,把它结束:

$results = $mysqli->query("SELECT * FROM written WHERE `unique` = '$unique' LIMIT 1");