• ベストアンサー

mysql_query関数の中身について

************************************************** //その1 $rs = mysql_query(" select 出席情報.学生番号, 学生情報.氏名, 学生情報.ふりがな, 講義情報.講義名, from 出席情報,講義情報,学生情報 where 学生情報.学生番号 = 出席情報.学生番号 and 出席情報.講義ID = 講義情報.講義ID ",$conn); ************************************************** //その2 $sql = "select"; $sql .= "出席情報.学生番号,"; $sql .= "学生情報.氏名,"; $sql .= "学生情報.ふりがな,"; $sql .= "講義情報.講義名,"; $sql .= "from"; $sql .= "出席情報,講義情報,学生情報"; $sql .= "where"; $sql .= "学生情報.学生番号 = 出席情報.学生番号 and"; $sql .= "出席情報.講義ID = 講義情報.講義ID"; $rs = mysql_query("$sql",$conn); ************************************************** その1のように書いたら普通にできるのですが、 その2のように書いたらWarningが出てできません。 $sqlという変数に代入するという以外は全くいじっていまん。 表示させようとすると、なにやらmysql_fetch_array()関数とmysql_free_result()関数の部分でWarningが出ています。 何がいけないのか全くわかりません。 分かる方いましたら、よろしくお願いします。

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

  • ベストアンサー
  • shu_a
  • ベストアンサー率87% (14/16)
回答No.2

スペースがいるのでは。 select出席情報.学生番号,学生情報.氏名,学生情報.ふりがな,講義情報.講義名,from出席情報,講義情報,学生情報where学生情報.学生番号 = 出席情報.学生番号 and出席情報.講義ID = 講義情報.講義ID ↑こういうのはおそらく解釈できないでしょう。 (その1では改行によるホワイトスペースが隠れています)

shinopo
質問者

お礼

しかしその2の書き方は、あるPHPの参考書に載っていたのを参考にしたのですが…。 参考書の書き方も、その2の書き方も同じはずなのですが、何がダメなんだろう。。

shinopo
質問者

補足

参考書を良く見てみると、shu_aさんの言われた通り、スペースが入っていました。 真似をしてスペースを入れてみたところ、普通にできました! たったスペースの入れ忘れだっただけですが、すごく勉強になりました! ありがとうございました♪

その他の回答 (1)

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

2の場合は$Sqlを変数にしていないからではないでしょうか? リテラルで囲むのは文字と判断させることになるのでは?

shinopo
質問者

お礼

あ!ホントだ!! と思ってカナリ期待してやってみたのですが、 リテラルを取ってみてもまったく同じWarningが出てしまいました。 でも、一つ勉強になりました。 ありがとうございます。

関連するQ&A