• 締切済み

mysql_fetch_assocについて

お世話になります。 MySQLからデータを取得してWEBで表示するために mysql_fetch_assoc関数を使っています。 SQL文を作って、mysql_query関数で実行させ、 結果をmysql_fetch_assocの引数にしているのですが 作成するSQL文に”DESC”を追加すると何も表示されなくなります。 (mysql_num_rowsでデータ数は取得できているのでSQL自体は有効の ようです) SQL文から”DESC"を取ると、mysql_fetch_assocの結果も正常に表示 されるのですが、どうしても降順に並べ替えて表示したいので 解決方法をご存知の方ご教授ください。よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

シングルコーテーションでくくっているところをバックコーテーション にしてみてもダメですか? (一応フィールド名はバックコーテーションでくくるルールですが シングルコーテーションでも文法上は有効のようです) 'hogeho' → `hogeho` $sqlresult = mysql_query($query); を、 $sqlresult = mysql_query($query) or die(mysql_error()); としてエラーは拾えませんか? (まぁエラーにはなってないようなので、関係ないかもしれませんが)

take111
質問者

補足

回答ありがとうございます。 バックコーテーションでくくってみましたが残念ながら 状況は改善されませんでした。またor die(mysql_error()); を付け加えてみましたがエラーは表示されませんでした。 やはりSQLは自体は正常に実行されているようです…

noname#26650
noname#26650
回答No.1

> SQL文を作って、mysql_query関数で実行させ、 > 結果をmysql_fetch_assocの引数にしているのですが このあたりのスクリプトを見せていただけますか?

take111
質問者

お礼

自己レスです。 $order = " order by 'hogeho' DESC"; のDESCの後ろにスペースを入れることで解決しました。 こんな単純なことでお騒がせして申し訳ありませんでした。

take111
質問者

補足

お世話になります。 スクリプトは以下のような感じです。 $query = "SELECT * FROM hogehoge "; 中略 $order =""; if($hoge == "hoge") { $order = " order by 'hogeho'"; } elseif($hoge == "hoge2") { $order = " order by 'hogeho' DESC"; } $query .= $order; 中略 $sqlresult = mysql_query($query); 中略 <? while($row = mysql_fetch_assoc($sqlresult)): もしこれでおわかりにならなければお申し付けください。 よろしくお願いいたします。

関連するQ&A