mysqlへ編集の為に、NOとpasswordを送信したいのですがエラー - PHPプロ!Q&A掲示板

2687

  • 1000P

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

質問日時 / 2010年4月20日 18:35    回答数 / 3件

Questioner:  tenapa3  このエントリーをはてなブックマークに追加 

キーワード / from    post   

register_globals = Onのサーバーは正常稼動しますが、Offの時下記エラーがでます。
ご指導下さい。
エラー内容upd3.phpで
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/users/0/lomo.jp-fukuoka/web/froz/upd3.php on line 18

●送信code
  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>
  23.  
  24. ●受信側

<?php

  //データベース関連のデータをインクルードします
  require_once("dbini.php");

  //MySQLに接続します
  $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
  //データベースを選択します
  $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);
 
 
$message35 = $col["message35"];
$message36 = $col["message36"];
ご指導よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01shimix><FORM method="POST" action="upd3.php?no=<?= $no ?
┣A02pannna単純にクエリがおかしいためにエラーが発生しています
┣A03magicflute2この意見は投稿者によって削除されました。
┗A04NurseAngelSQLインジェクション脆弱性が存在します。 × $sql

回答一覧

並び替え:

A01
answerershimix [4月20日 19:00] (最終編集:4月20日 19:01)

><FORM method="POST" action="upd3.php?no=<?= $no ?>" enctype="multipart/form-data">

この時点ではセットされているのですよね。FORMのmethodはPOSTですが、noはQueryStringで渡しているので

  1. $sql = "select * from fro where no =  $_GET['no']";

でないとマズイです(フォーム部品ではないので$_POST['no']では受け取れません)。

#register_globals = Onのときは、直接$noで書いているのかな・・

この意見に回答する

ツリーへ TOPへ

A02
answererpannna [4月20日 20:21] (最終編集:4月20日 20:42)

単純にクエリがおかしいためにエラーが発生しています。
echoなりで実行しているクエリを出力してみて下さい。

shimixさんのレスに答えがずばり書いてありますので、解決方法はそちらを参考に…

# エラーコードで検索かければ答えがすぐ出てくるのですが、
# 失礼ながらご自分で調べたりはなさらなかったのでしょうか?

この意見に回答する

ツリーへ TOPへ

A03
answerermagicflute2 [4月20日 20:51]

この意見は投稿者によって削除されました。

ツリーへ TOPへ

A04
answererNurseAngel [4月21日 00:38] (最終編集:4月21日 00:39)

SQLインジェクション脆弱性が存在します。

×  $sql = "select * from fro where no =  $_POST[no]";
△  $sql = "select * from fro where no =  ".mysql_real_escape_string($_POST['no']);
○ バインド

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
include されたファイルの変数
 このエントリーをはてなブックマークに追加 
A
出来ます。include(require)は、その部分に読み込むファイルの内容を展開したのと同義です。エディタでファイル読み込み(あるいはコピペ)した状態と同じだと考えていいです。 #defineや変数定義だけの共通フ...

>>続きを読む

shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)