Php 这个SQL查询有什么问题?(MySQL错误)
我的问题出了什么问题Php 这个SQL查询有什么问题?(MySQL错误),php,mysql,sql,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服务器版本,以便使用正确的语法 第1行的“OrderSet”ASC”旁边的“WHERE LinkedID=“6”ORDER 您应
mysql_query("SELECT * FROM admin_nav1 WHERE Active = 'YES' AND WHERE LinkedID = '$WID' ORDER by 'OrderSet' ASC") or die(mysql_error());
我不断地发现这个错误:
您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以便使用正确的语法
第1行的“OrderSet”ASC”旁边的“WHERE LinkedID=“6”ORDER
您应该只有一个WHERE子句。运算符足以将这两种情况分开
SELECT *
FROM admin_nav1
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause
ORDER by OrderSet ASC
还有一件事,您的查询将无法正确排序行,因为您已经用单引号将列名OrderSet包装起来,从而将其转换为字符串。当您关心列名是否为保留关键字时,您可以使用反勾号将其换行,或者在表上提供别名,并使用带有该别名的列名来分隔列,但不能使用单引号
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,可以避免在值周围使用单引号
您应该只有一个WHERE子句。运算符足以将这两种情况分开
SELECT *
FROM admin_nav1
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause
ORDER by OrderSet ASC
还有一件事,您的查询将无法正确排序行,因为您已经用单引号将列名OrderSet包装起来,从而将其转换为字符串。当您关心列名是否为保留关键字时,您可以使用反勾号将其换行,或者在表上提供别名,并使用带有该别名的列名来分隔列,但不能使用单引号
作为旁注,如果变量的值来自外部,则查询易受攻击。请看下面的文章,了解如何预防它。通过使用PreparedStatements,可以避免在值周围使用单引号
你需要用where一次
SELECT * FROM admin_nav1
WHERE Active = 'YES' AND .....
然后对更多条件使用and运算符。您需要使用where一次
SELECT *
FROM admin_nav1
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause
ORDER by OrderSet ASC
SELECT * FROM admin_nav1
WHERE Active = 'YES' AND .....
然后使用and运算符获得更多条件
SELECT *
FROM admin_nav1
WHERE Active = 'YES' AND LinkedID = '$WID' // <<== one WHERE clause
ORDER by OrderSet ASC