2008-11-13 33 views
0

我越來越Mysql拋出查詢錯誤尚未完成查詢就好 - 爲什麼?

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result 
resource in *filename* on line 81 

在運行一個查詢生成圖表。查詢從mysql數據庫獲取數據並使用它來構建圖表。

通常,我得到這個錯誤,並轉到代碼,找到我搞砸了,修復它,然後繼續前進。關於這個問題的棘手部分是查詢實際上正在運行並且圖表正在構建並準確顯示。爲什麼我的服務器(localhost on xampp)告訴我,查詢結果不好時,它可以利用資源就好了?

下面是完整的查詢:

$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); 
+0

什麼是在線81? – dkretz 2008-11-13 22:42:04

+0

,我想你會省略查詢本身最重要的信息。 – markus 2008-11-13 22:43:51

+0

爲什麼你使用extract()呢?你可以這樣做:$ roll [] = $ roshrow ['term']; – mercutio 2008-11-13 22:43:52

回答

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

因爲在循環中您的查詢,不處理的條款之一(可能因爲SEARCH_TERMS缺少行對於具體的轉變。這是奇怪的,因爲你要查詢的同桌。

然而,因爲它是一個警告,而不是一個致命的錯誤,它仍然會繼續。

無論哪種方式,它似乎是錯誤的方式來拉你的數據,你也許可以做到taht一個查詢,適當的排序(ORDER BY)直接在SQL服務器,GROUP BY和SUM()獲得您的條款總和。

您應該閱讀您的SQL inste廣告:)

 

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

然後只需將它複製到你的哈希表,它應該已經被排序,藏漢爲僅限於10個條目。