'警告:mysql_fetch_array()期望参数1是资源,在...中给出布尔值但我的查询是正确的

Cad*_*ade 0 php mysql

好的,所以我知道'为什么我用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...
}
Run Code Online (Sandbox Code Playgroud)

'while'语句中的所有内容都正常执行 - 它会对DB进行一些更改,我可以对其进行验证.更重要的是,查询永远不会泄漏任何错误详细信息.我已经尝试测试$ result === false并询问错误信息的情况,但它不会返回任何内容.据我所知,查询字符串很好,并没有失败.

我在这做错了什么?有没有其他原因为什么PHP不喜欢我的参数除了SQL语句之外的参数是坏的(再次,我相信它不坏)?

另外,我知道我应该使用mysqli/PDO ....我计划在不久的将来切换到那个,但是我只是想把这个工作拉出去,我不知道它为什么会赢得'吨.在这一点上,这更像是个人的事情......

感谢您的帮助,如果您需要任何其他信息,请与我们联系.(PHP版本5.3)

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

  SELECT * FROM newuser WHERE token='6e194f2db1223015f404e92d35265a1b'
Run Code Online (Sandbox Code Playgroud)

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

Ter*_* D. 5

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

while($row=mysql_fetch_array($result)) {
   do stuff...
}
Run Code Online (Sandbox Code Playgroud)

如果die未执行该语句,$result则在进入while循环时可以.那么问题可能是你$result在循环内部使用查询,最终导致它被设置为false.