0

わかりましたので、「mysql_fetch_array でこの警告が表示されるのはなぜですか...」という質問が何度か聞かれていることは知っています。私の問題は、サーバーがこの警告を吐き出している理由は、クエリ自体がは間違っています...これは私には当てはまりません。

以下にコードを示します。

$dbhost = "host";
$dbuser = "user";
$dbpass = "pass";
$dbname= "db";
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die ('<META HTTP-EQUIV="Refresh" CONTENT="0;URL=Failed.php?dberror=1">');    

$token = mysql_escape_string($_GET['token']); 

$query = "SELECT * FROM newuser WHERE token='$token'";
$result = mysql_query($query) or die(mysql_error());

while($row=mysql_fetch_array($result)) {
   do stuff...
}

「while」ステートメント内のすべてが正常に実行されています.DBにいくつかの変更が加えられていることを確認できます. さらに重要なことは、クエリがエラーの詳細を吐き出さないことです。$result===false のケースをテストしてエラー情報を要求しようとしましたが、何も返されません。私が知る限り、クエリ文字列は問題なく、失敗していません。

ここで何が間違っていますか?PHP が SQL ステートメント以外の While パラメーターを気に入らない理由が他にあるでしょうか (これも悪くないと確信しています)。

また、私は mysqli/PDO を使用する必要があることを知っています....近い将来それに切り替える予定ですが、これを機能させようとしているだけで、なぜそれがうまくいかないのかわかりません。 t。今回はもっと個人的な話ですが…

ご協力ありがとうございます。追加情報が必要な場合はお知らせください。(PHP バージョン 5.3)

クエリ文字列 ($query) のエコーは次のとおりです。

  SELECT * FROM newuser WHERE token='6e194f2db1223015f404e92d35265a1b'

そして、ここにクエリ結果 ($result) の var_dump があります: type (mysql result) の resource(3)

4

4 に答える 4

5
$query = "SELECT * FROM newuser WHERE token='$token'";
$result = mysql_query($query) or die(mysql_error());

while($row=mysql_fetch_array($result)) {
   do stuff...
}

dieステートメントが実行されない場合は$result、while ループに入ると OK です。問題はおそらく$result、ループ内のクエリにも使用し、最終的に false に設定されることです。

于 2013-03-30T22:54:35.640 に答える