Mysql抛出查询错误还没完成查询就好 - 为什么?

时间:2008-11-13 22:39:05

标签: php mysql

我正在

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 个答案:

答案 0 :(得分:2)

这样做:

$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_query已经返回“false”并且不是有效的结果资源。

答案 1 :(得分:1)

因为你在一个循环中查询,所以没有处理其中一个术语(可能是因为search_terms缺少特定转弯的行。这很奇怪,因为你正在查询同一个表。

但是,由于它是一个警告,而不是致命的错误,它仍然会继续。

无论哪种方式,这似乎都是错误的方式来提取数据,你可以用一个查询,直接在SQL服务器中进行充分排序(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个条目。