好的,所以我知道关于"为什么我用 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并要求提供错误信息的情况,但它也不会返回任何内容。据我所知,查询字符串很好,并且没有失败。

我在这里做错了什么?除了SQL语句外,PHP不喜欢我的while参数的其他原因是否不喜欢我的while参数(这再次,我坚信这还不错)?

另外,我知道我应该使用mysqli/pdo ….我打算在不久的将来切换到它,但是我只是试图做这项工作,我不知道为什么会赢了’t。在这一点上,这更多是个人的事情…

感谢您的帮助,让我知道您是否需要任何其他信息。(PHP版本5.3)

这是查询字符串($ query)的回声:

  SELECT * FROM newuser WHERE token='6e194f2db1223015f404e92d35265a1b'

这是查询结果的var_dump($结果):类型的资源(3)(mysql结果)

答案

$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输入WARE循环时可以。那么问题可能是您使用$result对于循环内的查询,最终导致其设置为false。

来自: stackoverflow.com