0

我有一个 php 脚本,它从数据库中提取内容并以某种方式打印它们。数据库有一个名为“order”的列标题,它的大小为 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'];,但我想要一个不需要添加这些的解决方案(应该是)不必要的行。我还尝试将分号(只是为了确定)添加到我的查询末尾,但它根本没有改变任何东西。谢谢你的帮助!

4

3 回答 3

5

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

$query = "SELECT * FROM <table> ORDER BY `order`";
于 2013-10-15T23:34:10.720 回答
0

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

SELECT * FROM <table> ORDER BY `order`
于 2013-10-15T23:34:59.497 回答
0

order是mysql中的保留字。使用反引号包围保留字,如下所示:

"ORDER BY `order`"

此处的文档:

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

于 2013-10-15T23:37:34.430 回答