代码之家  ›  专栏  ›  技术社区  ›  kevtrout

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

  •  0
  • kevtrout  · 技术社区  · 17 年前

    我越来越

    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); 
    
    2 回复  |  直到 17 年前
        1
  •  2
  •   mercutio    17 年前

    这样做:

    $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_查询返回了“false”,并且不是有效的结果资源,所以您收到了该消息。

        2
  •  1
  •   jishi    17 年前

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

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

    您应该阅读您的SQL:)

    SELECT term, SUM(term_number) as term_sum
    FROM search_terms 
    GROUP BY terms 
    ORDER BY term_sum DESC
    LIMIT 10
    
    

    然后将它复制到您的哈希表中,它应该已经被排序,并且限制为10个条目。

    推荐文章