• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索後のソートについて)

検索後のソートについて

このQ&Aのポイント
  • PHP、MySQL、初心者なので検索アプリの作成に挑戦しています。
  • 検索後のソートがうまくいきません。過去ログを参考にしてもうまくソートできず、困っています。
  • 正しいスクリプトの書き方がわからず、ソートできない状況です。助けてください。

質問者が選んだベストアンサー

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

if($word != ""){ $sql = "create temporary table tmp SELECT * FROM perfume where shohin_name like '%$word%') "; } のところ、とじカッコだけになってます。たぶんここは 文法エラーになります。まぁこれは単なる転記ミスだとは思いますが。 さて、mysql_db_query()はあまり推奨されていません。 mysql_connect()したらmysql_select_db()して、 アクセスはmysql_query()で行なったほうがよいでしょう。 mysqlのデバッグにはdieでmysql_error()を呼ぶのが常套です。 一度お試しになってみてはいかが? <?PHP $link=mysql_connect('host','username','password'); mysql_select_db('dbname',$link); $sql="・・・"; $rs = mysql_query($sql,$link) or die($sql ."<br>".mysql_error()); $rows = mysql_num_rows($rs); ?>

neohiro
質問者

お礼

yambejpさん、大変お世話になりました。 いろいろ試行錯誤した結果、ソートできるようになりました。 この度は、ご教授ありがとう御座いました。

neohiro
質問者

補足

yambejpさん、お世話になります。 MySQL接続をご教授いただいた方法に変更いたしました。 改めて、検索後のソートを行いましたところ、 Query was empty と、エラー表示されます...? すいません、何度もトライしたのですが解決にいたりません。 ご多忙の中恐れ入りますが、今一度、ご教授願えないでしょうか? 宜しくお願いいたします。

その他の回答 (1)

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

>としては見たのですがうまくいきません。 「うまくいかない」とはどういう状態なのでしょうか? エラーがでるのか? エラーは出ないが結果が返ってこないのか? 結果は返ってくるが想定したものと違うのか? 想定したものだが表示がおかしいのか? $sql = "create temporary table tmp SELECT * FROM perfume where shohin_name like '%$word%' "; 自体は特に間違いはありませんが、できればヒアドキュメント に書き直した方がよいような気はします。 $sql = <<<eof CREATE TEMPORARY TABLE `tmp` SELECT * FROM `perfume` WHERE `shohin_name` LIKE '%{$word%}' eof;

neohiro
質問者

補足

yambejpさん、お世話になります。 状況を説明させていただきます。 //検索プログラム if($word != ""){ $sql = "create temporary table tmp SELECT * FROM perfume where shohin_name like '%$word%') "; } $rs = mysql_db_query($db,$sql); //ソートプログラム switch ($_GET['sort']) { case 0: $sql = "SELECT * FROM perfume where shohin_name like '%$word%' order by f__price asc "; break; case 1: $sql = "SELECT * FROM tmp where shohin_name like '%$word%' order by f__price desc "; break;        .        .       (続く) . . } $rs = mysql_db_query($db,$sql); $rows = mysql_num_rows($rs); 「case 0」は、通常のソートです。 「case 1」に、上記のように記述しました。 ブラウザで検索後に「case 1」をクリックしてソートさせてみましたところ、 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/hogehoge/search.php on line 151 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/hogehoge/search.php on line 275  のようなerrorが出ました。 ちなみに、line 151行目は $rows = mysql_num_rows($rs); です。 line 275行目は、 while($row = mysql_fetch_array($rs)) { です。 「case 0」の通常のものをクリックしましたところ、テーブル内のすべてのアイテムが表示されてしまいました。 うまく説明できなくて、申し訳ございません。 ご教授、宜しくお願いいたします。

関連するQ&A