这个SQL查询有什么问题? (MySQL错误)

时间:2013-03-09 14:19:43

标签: php mysql sql

我的查询有什么问题?

mysql_query("SELECT * FROM admin_nav1 WHERE Active = 'YES' AND WHERE LinkedID = '$WID' ORDER by 'OrderSet' ASC") or die(mysql_error());

我一直收到这个错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'WHERE LinkedID ='6'ORDER'在第1行'OrderSet'ASC'

2 个答案:

答案 0 :(得分:5)

您应该只有一个WHERE子句。 AND运算符足以将这两个条件分开。

SELECT  * 
FROM    admin_nav1 
WHERE   Active = 'YES' AND LinkedID = '$WID'  // <<== one WHERE clause
ORDER   by OrderSet ASC

还有一件事,您的查询不会正确ORDER行,因为您已使用单引号包装列名OrderSet,从而将其转换为字符串。如果您关注列名称(如果它们是保留关键字),您可以使用反引号包装它或在表格上提供别名并使用带有该别名的列名来分隔列,但不是< / strong>单引号。

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

答案 1 :(得分:0)

你需要在哪里使用

SELECT * FROM admin_nav1 
WHERE Active = 'YES' AND  .....

然后使用和运算符来获得更多条件。