• 締切済み

MySQLからデータを取得して表示したい

PHP+MySQLでWeb検索を作成していますが、不明点があるので質問させていただきます。 入力フォームから文字列を入力し、データベースに文字列がある場合、そのフィールド(行)のデータを表示させるということがうまくできません。(ちなみにデータベース接続、文字取得といったところは問題なくできています。) 例えば、以下のようなテーブルがあったとします。 学校 名前 点数 就職先 A校 佐藤 100 A社 B校 鈴木 90 B社 C校 寺本 80 C社 ここで入力フォームから鈴木と入力させて$nameに引き渡し、 $result = mysql_query( "select * from {$tableName} where `名前` like {$name}") ; while( $row = mysql_fetch_row( $result)){ var_dump( $row); } B校 鈴木 90 B社 という内容を表示させたいのですが、何も表示されません。データベース上(実際操作したのはphpmyadmin上)でクエリを送信してみると、フィールドが表示されるので、問題あるとしたら$rowのあたりかと思うのですが、原因がつかめません。どのように取得・表示させればいいか、ご教授下さいませ。 $result = mysql_query( "SELECT * from {$tableName}"); while( $row = mysql_fetch_row( $result)){ var_dump( $row); } ちなみにこれだとテーブルの全要素が配列に入って、表示されるのですが・・・。違いがよくわかりません。 よろしくお願い致します。

みんなの回答

  • yaha_2007
  • ベストアンサー率21% (13/61)
回答No.6

デバッガ使うなりなんなりしてSQLのテキストを出力させればいいと思うよ! 意図しているSQL文と全然違うものが実は入ってましたなんてよくあることだからね!

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

#1ですが $sql="select * from `{$tableName}` where `名前` like '{$name}'"; print $sql; $result = mysql_query($sql) or die(mysql_error()); としてみてください・・・ おそらくSQL文が不完全なのだと思います >like 鈴木 とか書いている時点でかなりやばそうです・・・ 最低でも、「like '鈴木'」でしょうし 普通はワイルドカードで「like '鈴木%'」 とかじゃないですか?

  • coopy72v
  • ベストアンサー率12% (1/8)
回答No.4

fromまでなら全部出るなら、where以降に問題はないんでしょうか 今まで私はSQLで列名をシングルクォーテーションで囲ったことはないのですが、列名が日本語だと囲うものなのですか? また、$nameや、そのSQL文全体を直接出力してみてはいかがでしょう 実はnameが入ってないから結果は空っぽ…かもしれません

saorin77
質問者

補足

回答ありがとうございます。 シングルクォーテーションを外してみたりもしましたが、だめでした。 nameをechoで出力させたりもしていまして、こちらは問題なくできております。 また、 $result = mysql_query( "select * from {$tableName} where `名前` like 鈴木") ; のように直接指定で試してみてもだめでした。 (質問に書いてあるように、テーブル全体を配列に取り込むということはできています。) $result = mysql_queryのあとに if ( !$result) でエラー処理をさせたりもしていますが、特にエラー出力されないので、クエリは問題なく送信されているけど、データだけ取得されていないということですよね。 なぜダメなのか全然わからない・・・。

  • yaha_2007
  • ベストアンサー率21% (13/61)
回答No.3

SQL文の実際値を出力してチェックすれば幸せになれるよ

saorin77
質問者

お礼

回答ありがとうございます。 実数値を出力してチェックとはどういうことでしょうか? よろしければ教えてくださいませ。

  • moneisjp
  • ベストアンサー率0% (0/2)
回答No.2

名前のところのシングルクォーテーションっているんですかね?

saorin77
質問者

お礼

ありがとうございます。 どうなんでしょう。一応、試してみましたが何も出力されません。 なぜでしょうか・・・。

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

select * from `{$tableName}` where `名前` like '{$name}' コーテーションをちゃんとつければよいのでは?

saorin77
質問者

お礼

ありがとうございます。 しかし、うまく行きませんでした・・・。

関連するQ&A