- ベストアンサー
PHPのfor文
送り側で次の情報を送ると、 select SyaName from Syain where SyaNo = 2select SyaName from Syain where SyaNo = Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /result.php on line 33 という文がループします。 SyaNo=1 から SyaNo=10 の計算をさせたいのですが、 なぜこれではだめなのでしょうか。。。 どう表記したらよろしいのでしょうか? 送り側>----------------------------<input type="text" name="WorDateYear" size="8" maxlength="4">年 <input type="text" name="WorDateMonth" size="5" maxlength="2">月<br> <input type="submit" name="create" value="作成"> >------------------------------- 受け側>---------------------------- $sql = "select WorDate,ComName,GenName,StrTime,EndTime,SyaNo1,SyaNo2,SyaNo3,SyaNo4,SyaNo5,SyaNo6,SyaNo7,SyaNo8,SyaNo9,SyaNo10 from Denpyo where WorDate like '%" . $_GET['WorDateYear'] . "-%" . $_GET['WorDateMonth'] . "%'"; $result1 = mysql_query($sql,$link); <? $body .= "<table> while($col = mysql_fetch_array($result1)){ for($cnt=1; $cnt<=10; $cnt++){ $sql = "select SyaName from Syain where SyaNo = " . $col[SyaNo.$cnt]; print $sql; $result2 = mysql_query($sql,$link); $col2 = mysql_fetch_array($result2); $SyaNo . $cnt = $col2['SyaName']; } $body .= "<tr>\n"; $body .= "<td rowspan='2'>" . date("j",$col['WorDate']) . "日</td>\n"; $body .= "<td rowspan='2'>" . date("w",$col['WorDate']) . "曜日</td>\n"; $body .= "<td rowspan='2'>" . $col['ComName'] . "</td>\n"; $body .= "<td rowspan='2'>" . $col['GenName'] . "</td>\n"; $body .= "<td>" . $col['StrTime'] . "</td>\n"; $body .= "<td>" . $col['EndTime'] . "</td>\n"; $body .= "<td>" . $SyaNo1 . "</td>\n"; $body .= "<td>" . $SyaNo2 . "</td>\n"; $body .= "<td>" . $SyaNo3 . "</td>\n"; $body .= "<td>" . $SyaNo4 . "</td>\n"; $body .= "</tr>\n"; $body .= "<tr>\n"; if ($col['StrTime'] < 074500){ $Str = 074500 - $col['StrTime']; } $body .= "<td>" . $Str . "</td>\n"; if ($col['EndTime'] > 170000){ $EndT = $col['EndTime'] - 170000; } $body .= "<td>" . $EndT . "</td>\n"; $body .= "<td>" . $SyaNo5 . "</td>\n"; $body .= "<td>" . $SyaNo6 . "</td>\n"; $body .= "<td>" . $SyaNo7 . "</td>\n"; $body .= "<td>" . $SyaNo8 . "</td>\n"; $body .= "</tr>\n"; } $body .= "</table>\n"; print $body; ?> >-------------------------------
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問文を読み直したら一番最初に、printして得た結果が表示されていたのですね。 それであれば、 「$sql = "select SyaName from Syain where SyaNo = " . $col[SyaNo.$cnt];」 このSQL文が間違ってるということでしょうね。 「select SyaName from Syain where SyaNo = 」 となっているとおりで、 $col[SyaNo.$cnt] これが値を出力できていないようです。
その他の回答 (2)
- hogehoge78
- ベストアンサー率80% (433/539)
エラーメッセージを見た感じ、SQL文自体が間違っているようですが、 実際そのSQL文に間違いは無いのでしょうか。 最初の、 $result1 = mysql_query($sql,$link); の後ろに、 echo mysql_error($link); と記述した場合に何らかのエラーメッセージが出てきませんか?
補足
col2の文書を削除してSQl文を流すと通りますので、 colのSQL文書は問題ないかと思われます。 echo mysql_error($link); と記述しても特に何も表示されず、 先のエラーメッセージのみ表示されます。
mysql_query()関数で警告がでていますね。無視しても大丈夫ですが。。 array mysql_fetch_array ( resource result [, int result_type] ) この関数の記述ですね。<参考> http://phpspot.net/php/man/php/function.mysql-fetch-array.html $col2 = mysql_fetch_array($result2,MYSQL_BOTH);でも警告はでますか?
補足
for文が間違っているのではなく、 array mysql_fetch_array ( resource result [, int result_type] ) に当てはまるように文を記述すればよいということですか? $col2 = mysql_fetch_array($result2,MYSQL_BOTH); と記述しても警告はでます。。。
補足
何度もコメントありがとうございます! すみません。。。その箇所がひっかかっている事はわかったのですが、 どうして、for文が通らないのか、 どうして、select文が SyaNo = 2 と 2からスタートしているのかがわかりません。 SyaNo = 1 から SyaNo = 10 のselect文を作りたいのですが。。。