人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。
自分でサンプルを見ながら作成したphpファイルを実行したところ

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/●●/public_html/●●/●●/members4.php on line 15

というエラー文がでました。そこで「members4.php on line 15」を見たところ

$users = mysql_fetch_array( $result );

と書いてありました。
MySQLもつかっています。

これは「members4.php on line 15」に問題があるのではなくデータベースに登録が出来ていないから出るエラーなのでしょうか?

前後の文も添付します。

$sql = "select mail1_us from users where mail1_us = '" . mysql_real_escape_string( $_GET['mail1_us'] ) . "'";
$result = mysql_query( $sql );
$users = mysql_fetch_array( $result );

if ( md5( $magic_code . $users['mail1_us'] ) == $_GET['md5'] ) {
$sql = "update users set state = '0' where mail1_us = '" . mysql_real_escape_string( $_GET['mail1_us'] ) . "'";

以上原因がわかる方、思い当たる方は教えて下さい。
宜しくお願い致します。

●質問者: kasai-de_eb
●カテゴリ:インターネット ウェブ制作
✍キーワード:HOME md5 MySQL ON PHP
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● kn1967
●26ポイント ベストアンサー

mail1_us自体が空っぽだった場合(すべてのデータを吐き出す事になります)や、

検索した結果該当なしの場合などを考慮して、

下記のような具合に事前チェックを入れるようにすると良いでしょう。

// パラメータのチェック
if (!isset($_GET['mail1_us']) {
 echo "パラメータが渡されてません。";
 exit;
} elseif ($_GET['mail1_us'] == '') {
 echo "パラメータが空っぽです。";
 exit;
}

// SQL発行と確認
$result = mysql_query($sql)
if (!$result) {
 echo "該当ありません。";
 exit;
}

// データ取得
$users = mysql_fetch_array( $result );

上記は非常に簡素な例です。

変なパラメータが渡ってきていないかや、よそのサイトなどからの侵入でないかなどの、

セキュリティ関連に関しては別の話となりますので、割愛してます。

◎質問者からの返答

今度は「if (!isset($_GET['mail1_us']) {」の部分にエラーがでました。


2 ● moco03
●26ポイント

$result = mysql_query( $sql );

echo "

";

print_r($result);

echo "

";

でうまく$resultが表示されていれば、データはうまく取り出せれていると思います。

データが取り出せてない場合、

$sql = mysql_real_escape_string( $_GET["mail1_us"] );

$sql = "select mail1_us from users where mail1_us = '$sql'";

$result = mysql_query("$sql");

echo "

";

print_r($result);

echo "

";

とやってみてもいいかも。

MySQLの文字コードとPHPの文字コードがうまく合ってないと接続できない場合が

僕は結構あるので試してみては。

UTF-8ならUTF-8Nにするとか。

◎質問者からの返答

参考にさせていただきます。

有難うございます。


3 ● horonict
●16ポイント

スクリプトの全体がないので分かりませんが、

mysql_connect→mysql_select_db→mysql_queryの順に実行していますか?

◎質問者からの返答

はい。

// db connect

$link = mysql_connect( $db_host, $db_user, $db_password );

mysql_select_db( $db_name );

$result = mysql_query( 'set character set utf8' );

参考書に書いてある通りに作りました。


4 ● キャナ
●16ポイント

$result が false になっていませんか?

ともかく、mysql_fetch_array() に渡された引数 $result が、正しい文じゃないという警告ですから、警告が出たときの $result を見てみるのが一番ですよ。


5 ● horonict
●16ポイント

> $link = mysql_connect( $db_host, $db_user, $db_password );


  1. $dbhostの内容は'localhost'になっていますか?
  2. MySQLの設定として、$db_user, $db_passwordで示されるID、パスワードは登録されていますか?
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ