0

次の選択ステートメントを使用して、ASC または DESC のいずれかで結果を並べ替えようとしています。

$query = "SELECT filmcode, FilmName, Genre FROM film WHERE Genre = '".$genre_value."' ORDER by '".$order_value."' ASC";

テーブルは正しくロードされていますが、属性は ASC 順になっていません。誰かが select ステートメントの問題点を見つけるのを手伝ってくれますか?

4

1 に答える 1

1

列名が一重引用符で囲まれているため、ステートメントはレコードを正しく並べ替えません。引用符を削除すると、確実に機能します。

$query = "SELECT filmcode, FilmName, Genre FROM film WHERE Genre = '$genre_value' ORDER by $order_value ASC";

が列名の場合$order_value、たまたま予約済みのキーワードであれば、バックティックを使用してエスケープできます。列名とテーブル名は識別子です。一重引用符を使用すると、識別子が文字列リテラルになり、order by 句が予期しない動作をする原因になります。

于 2013-04-28T17:22:38.760 に答える