1

我的查询有什么问题?

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

我不断收到此错误:

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

4

2 回答 2

5

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

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

还有一件事,您的查询将无法ORDER正确显示行,因为您已将列名OrderSet用单引号括起来,从而将其转换为字符串。当您关心列名是否是保留关键字时,您可以使用反引号将其包装起来,或者在表上提供别名,并使用具有该别名的列名来分隔列,但不能使用单引号。

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

于 2013-03-09T14:20:30.580 回答
0

你需要使用 where 一次

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

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

于 2013-03-09T14:21:26.897 回答