-2

mysqlSELECTクエリでORDERBYを使用していますが、データを並べ替えていないことを知りません。このクエリを使用すると、テーブルが表示されますが、データを昇順で並べ替えることはできません。

$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()); 

次に、クエリの構文が正しくないというエラーが表示されます...さまざまなサイトで見ましたが、コードに一意のものが見つかりませんでした...正しいと思います...クエリを確認して修正してください解決。事前に感謝します:)

4

4 に答える 4

3

一重引用符ではなく、バッククォートが必要です(a)

... SELECT * FROM learningmaterial ORDER BY `order` ASC ...

一重引用符を使用すると、行を定数で並べ替えることができるため(各行は同じ定数を取得します)、事実上、まったく並べ替えることはありません。

の「裸の」列名を使用すると、予約語であるorderため、SQLパーサーが混乱します。order


(a):もちろん、この問題は、列名として予約語の使用をやめると解消されますが、理由(列が呼び出されるという事実にすでに依存しているプログラムのバケットロードなど)のためにそれを行ったと思いますorder

私自身、列に一般的な名前(orderまたはなどdate)を使用せず、代わりに言語と競合しないもの(order_numまたはなど)を使用する傾向がありますstart_date。そうすれば、私は逃げることを心配する必要はありません。

于 2012-10-06T08:24:27.870 に答える
1

SQL予約キーワードorderを列名として使用しているので、バックティックを使用してエスケープします...このように

SELECT * FROM learningmaterial ORDER BY `order` ASC

列名を変更することをお勧めします

予約キーワードのリストのリファレンス

于 2012-10-06T08:26:10.167 に答える
1

ORDER予約済みのSQL構文キーワードです。直接使用することはできません

SELECT *FROM learningmaterial ORDER BY `order` ASC
-------------------------------^---------

2番目のケースでは

SELECT *FROM learningmaterial ORDER BY order ASC
---------------------------------^-------^--
//this is a sql error

意味がありません。

于 2012-10-06T08:28:42.023 に答える
1

は予約語であるためOrder、単一引用符ではなくバックティックを使用してそれらをラップする必要があります。

SELECT * FROM `learningmaterial` ORDER BY `order` ASC
于 2012-10-06T08:31:46.303 に答える