我的查询在这里有什么问题?
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 by 'OrderSet' ASC' at line 1
您应该只有一个WHERE
子句。AND
算子足以分离两个条件。
SELECT *
FROM admin_nav1
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause
ORDER by OrderSet ASC
还有一件事,您的查询将不能正确地ORDER
行,因为您用单引号包装了列名OrderSet
,从而将其转换为字符串。当您关心列名是否为保留关键字时,您可以用反勾号包装它或在表上提供别名,并使用带有该别名的列名来分隔列,但不能用单引号分隔。
作为旁注,如果变量的值(s)来自外部,则查询容易受到SQL Injection
的攻击。请看看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
- 如何防止SQL注入在PHP?
你需要使用where once
SELECT * FROM admin_nav1
WHERE Active = 'YES' AND .....