こんにちは。オプションメニューから選択した項目によって結果を出力するというものを作っています。
オプションで選択するのは名前、年度、距離です。
テーブルは以下の2つを用います。
membersテーブル(主キー:number)
number name
1 A
2 B
kirokuテーブル (主キー:number,date)
number date full half 10km
1 2005-5-22 2:55:21
1 2004-3-11 1:19:15
ここから、例えば、オプションで「A」「2005年」「フル」を選択するとAの2005年のフルの記録が表示されるというものです。
sql文は以下のようにしました。
$sql = "select members.number,members.name kiroku.date,kiroku.$distance from members,kiroku where (members.name = $name) and (kiroku.date like '%$date%') and (members.number = kiroku.number)";
ここで$distanceにはオプションで選択した距離(例だとfull)$nameには選択した名前(例だとA)$date(には選択した年度(例だと2005)が入っています。
しかし、これだと
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ~
が表示され、だめでした。
この場合どうすればよいのでしょうか?
よろしくお願いします。
解説まで添えてくださって、本当にありがとうございます。
wakame0729さんのおっしゃるとおりにやってみたのですが、再び以下のメッセージが表示されてしまいました。
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ~
やはり、sql文自体に問題があるのでしょうか?
すみません。$nameの前後に"がついていませんでした。
以下が訂正後のsql文です。
$sql = "select members.number,members.name kiroku.date,kiroku.$distance from members,kiroku where (members.name = "$name") and (kiroku.date like '%$date%') and (members.number = kiroku.number)";
質問者
補足
エラー行の前後を見たところ、おそらく以下のsql文に誤りがあると思われるのですが・・・
ご指摘にあった""や()の数は間違っていないと思うのですが、どこか抜けているでしょうか?
$sql = "select members.number,members.name kiroku.date,kiroku.$distance from members,kiroku where (members.name = $name) and (kiroku.date like '%$date%') and (members.number = kiroku.number)";
>Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ~
このエラーはmysql_fetch_array()の引数が正常な値じゃありません、という意味です。mysql_queryの実行時にエラーがあるか、DBとのコネクト等がうまく行ってないかだと思います。
mysql_queryの返り値を$rsだとして、var_dump($rs);としてみて下さい。falseになってませんか?
次にmysql_queryの直後でmysql_error()を実行して下さい。エラーメッセージが表示されるはずです。これがSQLエラーであればSQL文の間違いです。mysql_queryの前でprint $sqlをして、表示されたSQL文をmysqlクライアントなどで実行してエラーが出ないか確認して下さい。
それ以外の場合でもエラーメッセージを参考にして、どこが間違っているのか確認しましょう。
ちなみにmenbers.nameは文字列型ですよね?だとしたら''でくくってあげないといけないはずです。また、適宜addslashersなどをして下さい。
質問者
補足
members.nameを"でくくることで
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ~
は表示されなくなりました。代わりに以下のエラーが表示されてしまうのですが、
Parse error: syntax error, unexpected T_VARIABLE in~
sql文が間違っているということなのでしょうか?
お礼
ご指導、ありがとございます! 現在、wakame0729さんのご説明やご紹介してくださったサイトを参考にsql文を書いています。(エラー表示はsql文に問題があるということがわかりました) ここ3日ほど取り組んでいるのですが、エラーが消えないため再び質問させていただくかもしれませんがそのときはよろしくお願いいたします。