- ベストアンサー
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が出ています。 何がいけないのか全くわかりません。 分かる方いましたら、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
スペースがいるのでは。 select出席情報.学生番号,学生情報.氏名,学生情報.ふりがな,講義情報.講義名,from出席情報,講義情報,学生情報where学生情報.学生番号 = 出席情報.学生番号 and出席情報.講義ID = 講義情報.講義ID ↑こういうのはおそらく解釈できないでしょう。 (その1では改行によるホワイトスペースが隠れています)
その他の回答 (1)
- tak2003
- ベストアンサー率32% (174/540)
2の場合は$Sqlを変数にしていないからではないでしょうか? リテラルで囲むのは文字と判断させることになるのでは?
お礼
あ!ホントだ!! と思ってカナリ期待してやってみたのですが、 リテラルを取ってみてもまったく同じWarningが出てしまいました。 でも、一つ勉強になりました。 ありがとうございます。
お礼
しかしその2の書き方は、あるPHPの参考書に載っていたのを参考にしたのですが…。 参考書の書き方も、その2の書き方も同じはずなのですが、何がダメなんだろう。。
補足
参考書を良く見てみると、shu_aさんの言われた通り、スペースが入っていました。 真似をしてスペースを入れてみたところ、普通にできました! たったスペースの入れ忘れだっただけですが、すごく勉強になりました! ありがとうございました♪