Php Mysql抛出查询错误但完成查询很好为什么?

Php Mysql抛出查询错误但完成查询很好为什么?,php,mysql,Php,Mysql,我越来越 Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in *filename* on line 81 在运行查询以生成图表时。查询从mysql数据库获取数据,并使用它来构建图表 通常,我会遇到这个错误,然后去看代码,找出哪里出了问题,修复它,然后继续前进。这个问题的棘手之处在于,查询实际上正在运行,图表正在准确地构建和显示。为什么我的服务器(xampp上的local

我越来越

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result 
resource in *filename* on line 81
在运行查询以生成图表时。查询从mysql数据库获取数据,并使用它来构建图表

通常,我会遇到这个错误,然后去看代码,找出哪里出了问题,修复它,然后继续前进。这个问题的棘手之处在于,查询实际上正在运行,图表正在准确地构建和显示。为什么我的服务器(xampp上的localhost)告诉我查询结果不好,而它可以很好地利用资源

以下是完整的查询:

$chart=array();
    $roll=array();
    //select used terms
    $rosh=mysql_query("select distinct term from search_terms");

    while($roshrow=mysql_fetch_assoc($rosh)){
        extract($roshrow);
            $roll[]=$term;
        }

        //select term_number for each term
        foreach($roll as $sterm){
            $termarray=array();
                  **//following is line 81**
            $bashq="select term_number from search_terms where term ='$sterm'";
            $bash=mysql_query($bashq);
            while($brow=mysql_fetch_assoc($bash)){
                extract($brow);
                //put results into array to sum
                $termarray[]=$term_number;
            }
            $termsum=array_sum($termarray);

        //put term=>number array for chart script
            $chart[$sterm]=$termsum;

        }
        //sort array so high numbers at beginning
        arsort($chart);

        //slice top 10 terms
        $chart=array_slice($chart,0,10); 
这样做:

$rosh=mysql_query("select distinct term from search_terms")
  or die("Error with query: " . mysql_error());
这是:

$bash=mysql_query($bashq)
  or die("Error with query: " . mysql_error();
当它失败时会告诉你。但是,您是正确的,因为mysql\u查询返回了“false”,并且不是有效的结果资源。请执行以下操作:

$rosh=mysql_query("select distinct term from search_terms")
  or die("Error with query: " . mysql_error());
这是:

$bash=mysql_query($bashq)
  or die("Error with query: " . mysql_error();

当它失败时会告诉你。但是,您是正确的,因为mysql\u查询返回了“false”,并且不是有效的结果资源。

因为您在循环中查询,其中一个术语没有被处理(可能是因为搜索术语缺少该特定回合的行。这很奇怪,因为您正在查询同一个表

但是,由于这是一个警告,而不是致命错误,因此它仍将继续

无论哪种方式,提取数据的方式似乎都是错误的,您可能只需一个查询,直接在SQL server中进行适当的排序(ORDER BY),GROUP BY和SUM()即可获得术语的总和

您应该阅读您的SQL:)

选择term,SUM(term\u number)作为term\u SUM 从搜索词 按条款分组 按项排序\u求和说明 限制10
然后把它复制到你的哈希表中,它应该已经被排序了,并且限制为10个条目。

因为你在一个循环中查询,其中一个术语没有被处理(可能是因为搜索术语缺少该特定回合的行。这很奇怪,因为你在查询同一个表

但是,由于这是一个警告,而不是致命错误,因此它仍将继续

无论哪种方式,提取数据的方式似乎都是错误的,您可能只需一个查询,直接在SQL server中进行适当的排序(ORDER BY),GROUP BY和SUM()即可获得术语的总和

您应该阅读您的SQL:)

选择term,SUM(term\u number)作为term\u SUM 从搜索词 按条款分组 按项排序\u求和说明 限制10
然后将它复制到您的哈希表中,它应该已经被排序,并且限制为10个条目。

我认为您忽略了最重要的信息,即查询本身。为什么在那里使用extract()?你可以这样做:$roll[]=$roshrow['term'];doofledorfer,我评论了codemercutio中第81行的位置……出于习惯,我使用提取液。我应该停止这样做,我认为您忽略了最重要的信息,即查询本身。为什么在那里使用extract()?你可以这样做:$roll[]=$roshrow['term'];doofledorfer,我评论了codemercutio中第81行的位置……出于习惯,我使用提取液。我应该停止对自己说“d-oh”。我有一个很好的习惯在我的查询中包含这个,直到我变得懒惰并停止使用它。罪犯?…数据库中的撇号。谢谢我自己的“d-oh”。我有一个很好的习惯在我的查询中包含这个,直到我变得懒惰并停止使用它。罪犯?…数据库中的撇号。谢谢,我应该仔细阅读我的sql。我在尝试对查询结果进行排序时感到非常头疼。我应该仔细阅读我的sql。我在对查询结果进行排序时感到非常头疼