简单查询中的MySQL语法错误

时间:2015-01-24 16:42:43

标签: php mysql

我在这里有一点点代码而且我完全迷失了,因为我在第1行'unique ='dD0231q'LIMIT 1'附近得到语法错误。这可能是非常简单的事情,但我似乎是盲目的对我自己的错误..

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

2 个答案:

答案 0 :(得分:3)

UNIQUE是MySQL中的关键字。如果你想将它用作表列名,请将它包装在`(反引号)引号中,如下所示:

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

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

答案 1 :(得分:2)

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

将列包裹在刻度中或重命名。

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

错误说明了一切:

  'unique

附近的

语法错误


另外,对于SQL injection您可以使用的内容use mysqli with prepared statementsPDO with prepared statements,它们更安全


为了争论,请完成它:

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