繁体   English   中英

简单查询中的MySQL语法错误

[英]MySQL syntax error in a simple query

我这里有一些代码,当我在第1行的'unique ='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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM