我有一个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'];
之类的操作,但我想要的解决方案不是必须添加那些(应该是)不必要的行。我也尝试在我的查询结尾添加分号(只是为了确定),但它根本不会改变任何东西。
谢谢你的帮助!
答案 0 :(得分:5)
order
是一个保留字,用反引号包围它
$query = "SELECT * FROM <table> ORDER BY `order`";
答案 1 :(得分:0)
由于order
是关键字,如果要将其用作标识符,则需要将其括在反引号中:
SELECT * FROM <table> ORDER BY `order`
答案 2 :(得分:0)
Order是mysql中的保留字。使用反引号来包围保留字,如下所示:
"ORDER BY `order`"
此处的文档: