• 締切済み

mysqlへ編集の為に、NOとpasswordを送信したいのですが!

mysqlへ編集の為に、NOとpasswordを送信したいのですが! ■送信 1.<FORM method="POST" action="upd3.php?no=<?= $no ?>" enctype="multipart/form-data"> 2.<TABLE border="0" cellpadding="2"> 3. 4. 5.<TR> 6. <TD valign="top" bgcolor="#6687cc"> 7. <FONT color="#ffffff" size="-1">パスワード</FONT> 8. </TD> 9. <TD valign="top"> 10. <FONT size="-1">半角8文字まで(英数のみ)</FONT><BR> 11. <INPUT size="17" type="password" maxlength="8" name="password" value="<?= $password ?>"> 12. </TD> 13.</TR> 14. <TR> 15. <TD align="center"> 16. <BR> 17. <INPUT type="button" value=" 戻る " onclick="history.back()"> 18. <INPUT type="submit" name="upd3" value=" 登録 "> 19. </TD> 20. </TR> 21.</TABLE> 22.</FORM> ■受信 //データベースを選択します $selectdb = mysql_select_db($DBNAME, $con); //パラメータnoのレコードだけを抽出するSQL文を組み立てます $sql = "select * from fro where no = $_POST[no]"; //結果セットを取得します $rst = mysql_query($sql, $con); //結果セットからデータを読み込みます $col = mysql_fetch_array($rst); ■Warning: mysql_fetch_array(): supplied argument is not a valid MySQL のエラーとなります。 ご指導下さい

みんなの回答

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

action="upd3.php?no=<?= $no ?>" このように、URL(ファイル名)の後ろに、?としてパラメータを付けた場合は、<form>のmethodがPOSTであっても、GETで送られるという仕様です。 [登録]ボタンを押すと、GETとPOSTで別々にパラメータが送られるって事で、微妙に混乱するのは判りますが。 どっちもPOSTで送りたいなら、 <input type="hidden" name="no" value="<?= $no ?>"> をform内に記述します。 受け取り側に何らかの都合があり、GET、POSTを混在させたい場合は、$_REQUEST['no']で取得するというのもありです。 ※手抜きで何もかも$_REQUESTで受け取るのはセキュリティ上問題あり。 その必要があり、混在させなければならない個所で限定して使う分には便利です。 あと気になる個所は $sql = "select * from fro where no = $_POST[no]"; ※直接受け取った値を使用しているため、SQLインジェクションの可能性あり。 //結果セットを取得します $rst = mysql_query($sql, $con); //結果セットからデータを読み込みます $col = mysql_fetch_array($rst); ※$rstの成功失敗を判定していないため、結果的にWarningがユーザーに表示されてしまっている。 ※その意味では、以下の$selectdbも同様。何らかの理由でDBに接続失敗した場合にはErrorまたは、Warningがユーザーに表示されてしまう。 $selectdb = mysql_select_db($DBNAME, $con); もう一点気になるのは HTMLタグが大文字な事。 xhtmlでは小文字と規定されているので、HTMLで作成する場合でも現在は小文字で書くのが主流。(HTMLでは大文字小文字どちらでもOKだが)

tenapa3
質問者

お礼

親切なご指導有難う御座います、 取り合えずお礼まで。

回答No.1

こんにちは $_POST[no]は飛んできませんが・・・? $_GETはありますけど。

関連するQ&A