dポイントプレゼントキャンペーン実施中!

order by での変数使用について。

PHPのsql文でDBからデータを抽出する際にorder byで特定のデータに対して昇順、降順でデータを抽出したいのですが、ここで変数を使うとorder byが上手く機能しません。
変数でなく、直接カラム名を記入すれば動くのですが・・・。

一つ疑問に思ったことはorder byで変数が使えるかというところです。
where等の条件検索では問題なく使えるので使えないということはないのかなぁと思って
試行錯誤していましたが、どうにもこうにも上手くいきません。

また変数にした理由ですが、今回情報を検索する機能を作成しています。
データの数が多いため、次のページなど何ページかに分けて表示しようと思っています。
そのため特定の値(検索条件)をセッションに保存し、次のページなどに移動しても値を保持して
同じ条件で続きからデータを抽出したいのです。

sql文は

$sql = 'SELECT * FROM `apartment` left join `member` on a_member = m_id left join `district` on a_district = d_id left join `room` on a_room = r_id WHERE `a_flg` = "0" AND `a_district` = "'.$_SESSION["district"].'" order by "'.$_SESSION["condition"].'"';

このようになっています。
セッションに値は入っていて、出力するとちゃんとカラム名(検索条件)が表示されます。
よろしくお願いします。

A 回答 (2件)

$sqlは単なる文字列として結合された値が設定されるわけですからwhere句だろうがorderby句であろうが関係なく変数は使えると思います。


実際にsqlが実行される直前で$sqlをprint等で出力して、本当に期待しているsql文が設定されているか確認してみてください。
    • good
    • 0
この回答へのお礼

今までsql文の中身を出力するということは思いつきませんでした。
出力してから内容を確認したところ「"」で括られていたので、「"」を「`」に変えたところ
期待していた検索結果が表示されました。
ありがとうございます!

お礼日時:2010/07/01 09:24

上のコードだと$_SESSION["condition"]の値は「"」で括られるけど、カラム名なら「`」で括るのではないでしょうか

    • good
    • 0
この回答へのお礼

「`」で括らないといけないのかと思い一度「`」で括って上手く動かなかったので諦めていたのですが、
ソースの書き方が悪かったみたいで「"」を単純に「`」に変えたらちゃんと動きました!
ありがとうございます!

お礼日時:2010/07/01 09:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!