mysql_fetch_array():提供的参数不是PHP脚本上有效的MySQL结果资源错误

时间:2012-03-03 00:35:24

标签: php mysql

好的,伙计们,这很令人尴尬。我收到这个PHP错误,已经linted,检查代码,但没有得到答案。有什么建议吗?

**Warning**: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in file.php on line **, heres the complete code

<?
session_start();

include 'keys.php';

include 'EpiCurl.php';
include 'EpiOAuth.php';
include 'EpiTwitter.php';
?>

作为附加数据,它将数据正确地推送到数据库,但会中断以下部分代码。

更新:问题发生在“require”文件中,而不是我发布的代码中,我使用的是此代码:while($results = mysql_fetch_array($results)) {我重复了2 $results

2 个答案:

答案 0 :(得分:2)

此处出现错误

$count_users = mysql_query("SELECT * FROM `users` WHERE `user`='$username' AND `authorized`='$app'");

$results_count = mysql_num_rows($count_users);


 ****=> $count_users is not valid resource id so** $results_count returns some value which is not 0**
        **=> therefore not going into this if statement**

        if ($results_count == 0) 
        {

        }
        else  **=> instead going to this else statement but $count_users is not valid resource id so mysql_fetch_array throws error**       
        { 
            while($count_results = mysql_fetch_array($count_users)) {$tokeni = $count_results["token"];}
            mysql_query("UPDATE `users` SET `date`=CURDATE(), `time`=CURTIME(), `token`='$final_token', `secret`='$final_secret' WHERE `token`='$tokeni'") or die(mysql_error());   
        }

答案 1 :(得分:0)

您假设带有mysql_query()语句的SELECT始终返回结果集资源。不是这种情况。引自mysql_query() documentation

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回   resultset,mysql_query()在成功时返回资源,或者返回FALSE   错误。

     

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,   mysql_query()成功时返回TRUE,错误时返回FALSE。

因此,如果出现错误,您最终会将布尔FALSE值传递给mysql_fetch_array()而不是结果集。这就是为什么在将mysql_query()返回的值作为结果集传递给其他函数之前,应检查FALSE返回的值是否为mysql_fetch_array()

更新:显然我们展示的代码与实际导致问题的代码不同。问题是由于在第二次调用时将while($results = mysql_fetch_array($results)) 的返回值传回给它而引起的:

mysql_fetch_array()

无论哪种方式,将不是结果集的值传递给{{1}}都是问题的原因,正如错误消息所说:

  

警告:mysql_fetch_array():提供的参数不是行中file.php中的有效MySQL结果资源