我在mysql SELECT查询中使用ORDER BY,但我不知道ots没有订购数据..如果我使用此查询显示表但不按升序排序数据
$result = mysql_query("SELECT *FROM learningmaterial ORDER BY 'order' ASC")or die(mysql_error());
但如果我使用
$result = mysql_query("SELECT *FROM learningmaterial ORDER BY order ASC")or die(mysql_error());
然后它给出错误,查询的语法不正确...我已经在各种网站上看到但我找不到我的代码中的任何独特...我认为它的权利,...请检查查询并修复一个解决方案。提前谢谢:)
答案 0 :(得分:3)
你需要反引号,而不是单引号(a):
... SELECT * FROM learningmaterial ORDER BY `order` ASC ...
通过使用单引号,您可以通过常量对行进行排序(每行获得相同的常量),因此实际上根本不对它们进行排序。
通过使用“{1}}的”裸“列名称,您会混淆SQL解析器,因为order
是保留字。
(a):当然,如果你停止使用保留字作为列名,这个问题就会消失但是我认为你出于某种原因(例如程序的桶加载已经取决于列被称为order
)的事实。
我自己,我倾向于不为列使用通用名称(例如order
或order
),而是选择与语言不冲突的内容(例如date
或order_num
)。这样我就不用担心逃跑了。
答案 1 :(得分:1)
您正在使用SQL保留关键字order
作为列名,因此请使用反向标记来逃避...像这样
SELECT * FROM learningmaterial ORDER BY `order` ASC
我建议您更改列名
列表参考答案 2 :(得分:1)
ORDER
是一个保留的sql语法关键字。你不能直接使用它
SELECT *FROM learningmaterial ORDER BY `order` ASC
-------------------------------^---------
在第二种情况下
SELECT *FROM learningmaterial ORDER BY order ASC
---------------------------------^-------^--
//this is a sql error
没有任何意义。
答案 3 :(得分:1)
由于Order
是保留字,因此需要使用反引号而不是单引号来包装它们。
SELECT * FROM `learningmaterial` ORDER BY `order` ASC