MySQL 查询末尾的“按顺序排序”会导致问题


" ORDER BY order" at the end of MySQL query is causing problems

我有一个php脚本,可以从数据库中提取内容并以某种方式打印它们。数据库有一个名为"order"的列标题,其 INT 大小为 11。当我从数据库中获取数据时,我试图按数据库中的值"order"对内容进行排序,如下所示:

<?php
$db_hostname = '<hostname>';
$db_database = '<db>';
$db_username = '<username>';
$db_password = '<password>';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
mysql_select_db($db_database, $db_server);
$query = "SELECT * FROM <table> ORDER BY order"; // why is "ORDER BY order" problematic...
$table = mysql_query($query);
$data_items = '';
$carousel_items = '';
while($row = mysql_fetch_array($table)) {
// ...etc

我从中获取信息的数据库中有几行,查询"SELECT * FROM <table>"完全按照应有的方式工作。我做错了什么?

如果有帮助,我得到的错误(在此脚本所在的网站上): Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /$PATH/php/myfile.php on line 15

15号线while($row = mysql_fetch_array($table)) {

我知道,如果我不偷懒,我可以在没有MySQL查询的情况下解决这个问题,并且由于php非常灵活,因此可以执行类似$array[$row['order']] = $row['what I want']; ,但我想要一个不必添加那些(应该是)不必要的行的解决方案。我还尝试在查询末尾添加分号(只是为了确保),但它根本没有改变任何东西。感谢您的任何帮助!

order 是一个保留字,用反引号括起来

$query = "SELECT * FROM <table> ORDER BY `order`";

由于order是一个关键字,如果要将其用作标识符,则需要将其括在反引号中:

SELECT * FROM <table> ORDER BY `order`

Order 是 mysql 中的一个保留字。使用反引号将保留字括起来,如下所示:

"ORDER BY `order`"

文档在这里:

http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html