0

データベースからコンテンツを取得して特定の方法で出力する php スクリプトがあります。データベースには、INT サイズ 11 の「order」という列ヘッダーがあります。次のように、データベースからデータを取得するときに、データベースの値「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>"は正確に機能します。私は何を間違っていますか?

それが役立つ場合は、エラーが返されます (このスクリプトの対象となる Web サイトで): 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'];ことをしますが、それらを追加する必要のないソリューションが欲しいです( be) 不要な行。また、クエリの最後にセミコロンを (念のため) 追加しようとしましたが、何も変わりません。助けてくれてありがとう!

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 に答える