Php “警告:mysql\u fetch\u array()希望参数1是资源,布尔值在…”中给出,但我的查询是正确的

Php “警告:mysql\u fetch\u array()希望参数1是资源,布尔值在…”中给出,但我的查询是正确的,php,mysql,Php,Mysql,好的,我知道关于“为什么我在mysql\u fetch\u array中收到此警告…”的问题已经被问了好几次,我的问题是所有被接受的答案都表明服务器发出此警告的原因是因为查询本身不正确…我不是这样 代码如下: $dbhost = "host"; $dbuser = "user"; $dbpass = "pass"; $dbname= "db"; $conn = mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname) o

好的,我知道关于“为什么我在mysql\u fetch\u 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...
}
这里是查询结果$result:resource3的var_转储,类型为mysql result

,根据mysql_,查询是不正确的。您收到的错误告诉您$result为布尔值false


美元代币从哪里来?你最好停止使用mysql函数,使用一个准备好的语句和一个绑定参数。

你的转义是错误的,试试这个

     $token = mysql_real_escape_string($_GET['token']);
而不是$token=mysql\u escape\u string$\u GET['token']

从PHP5.5.0开始,此扩展已被弃用,将来将被删除


因此,现在我可以说,问题不在于mysql\u escape\u字符串,也不在于mysql的使用,也不在于用户名和密码的访问权限,我想告诉您的是测试$result,如果它是一个资源,请像这样继续执行while块

if(is_resource($result))
    {
        while($row = mysql_fetch_array($result))
            {//process your code here}
    }
告诉我代码是否也已执行:

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

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

如果未执行die语句,则进入while循环时,$result是OK。那么问题可能是在循环内部的查询中也使用了$result,最终导致设置为false。

所以mysql\u query下面的echo mysql\u error没有输出任何内容?这通常意味着您的查询不正确。标题mysql\u fetch\u数组和代码mysql\u fetch\u assoc请正确编写您的代码。我理解这意味着什么,但我告诉您,查询是正确的。令牌来自get变量。这是一个散列,所以只有基本的字母数字字符,没有符号。我对它执行了一个mysql\u escape\u string函数,但是由于没有特殊的字符可以转义,所以实际上没有matter@echo_me很抱歉,我已经试过array和assoc,只是为了确定一下“Array”是我使用的原始版本它可能是错的吗?我可以通过php myadmin在控制台中执行sql语句,这很好。顺便说一句,我编辑了代码以显示令牌来自何处我一定会尝试一下,但我能问一下为什么这很重要吗?是的,这很重要,因为它没有定义你的函数mysql_escape_string,对,我最终会转到PDO。只是现在没有时间-这对我来说更容易实现,因为我已经在我的应用程序中的其他地方使用了它,不,哈哈。我收到另一个警告,上面写着:[function.mysql real escape string]:用户“username”@“localhost”的访问被拒绝,使用密码:NOIs。我想这是因为PHP设置吗?@Caderade:Hmmm执行时有没有警告?
$query = "SELECT * FROM newuser WHERE token='$token'";
$result = mysql_query($query) or die(mysql_error());

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