2014-03-30 41 views
0

如何嵌套函數循環?嵌套函數掛起

我正在嘗試做一個函數來計算子類別的數量並計算其中的子類別。

<?php 

function hier_data($parent_category = 0, $category_count = 0) { 

    global $db_connect; 

    // Select query 
    $query = " 
     SELECT 
      * 
     FROM 
      " . DB_PFIX . "product_categories 
     WHERE 
      category_parent = '" . $parent_category . "' 
    "; 

    // Return results 
    if($results = mysqli_query($db_connect, $query)) { 
     while($result = mysqli_fetch_assoc($results)) { 

      $category_count = $category_count + 1; 

      $category_count = hier_data($result["category_id"], $category_count); 
     } 
    } 

    return $category_count; 

} 

?> 

注意:函數工作來算一個子類別只有當我刪除行hier_data($result["category_id"], $category_count);在while循環下的查詢結果。但是我不能讓函數循環來計算子類別子貓。

+1

聽起來像一個壞主意無論如何..你不能在1查詢嗎?或者至少在查詢中使用「COUNT」? – putvande

+0

使用連接可以做到這一點嗎? –

+0

對於每個類別,它需要能夠以無限深度對子類別進行計數。 –

回答

1

您可以使用子查詢或連接來計算計數,但這意味着要對每一行進行計數。所以它可能是一個好主意運行一個單獨的查詢,如:

"SELECT COUNT(*)," , category 
    FROM " . DB_PFIX . "product_categories 
    WHERE category_parent = '" . $parent_category . "' 
    GROUP BY category"; 
+0

試過這個,但沒有任何運氣。好奇爲什麼我的嵌套函數不起作用。顯然它造成了無盡的循環,但我不知道爲什麼。 –

+0

我編輯了答案,因爲我犯了一個錯誤,ps我不知道你是否有名爲'category'的列,所以我猜這個名字 – andrew

+0

我不能真正包裹我的頭,通過遞歸調用一個函數while循環,但它似乎是一個非常困難的方法來管理 – andrew