自分でサンプルを見ながら作成した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'] ) . "'";
以上原因がわかる方、思い当たる方は教えて下さい。
宜しくお願い致します。
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 );
上記は非常に簡素な例です。
変なパラメータが渡ってきていないかや、よそのサイトなどからの侵入でないかなどの、
セキュリティ関連に関しては別の話となりますので、割愛してます。
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']) {」の部分にエラーがでました。
$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にするとか。
参考にさせていただきます。
有難うございます。
スクリプトの全体がないので分かりませんが、
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' );
参考書に書いてある通りに作りました。
$result が false になっていませんか?
ともかく、mysql_fetch_array() に渡された引数 $result が、正しい文じゃないという警告ですから、警告が出たときの $result を見てみるのが一番ですよ。
> $link = mysql_connect( $db_host, $db_user, $db_password );
今度は「if (!isset($_GET['mail1_us']) {」の部分にエラーがでました。