2014-05-09 184 views
0

我有保留這下遞歸函數返回500錯誤遞歸函數返回500錯誤

public function get_parent($cat=0){ 
     $ci = &get_instance(); 
     $q= $ci->db->query("SELECT category_id,parent_id FROM tbl_products_categories WHERE category_id = {$cat}"); 
     if($q->num_rows()>0){ 
      $row = $q->row(); 
      if($row->parent_id == 0){ 
       return $row->category_id; 
       break; 
      }else if($row->parent_id != 0){ 
       $this->get_parent($row->category_id) ; 
      } 
     } 
     else{ 
      return 0; 
     } 

    } 

我打電話像這樣的功能:

$cat = 9; 
$main_cat =$this->get_parent($cat); 

回答

0
$this->get_parent($row->category_id); 

是調用get_parent與你最初調用它的同一個ID,所以它繼續遞歸,直到你得到堆棧溢出。

僅供參考根據您的數據庫,應該可以在沒有多個查詢的情況下執行您想要的純SQL操作。

編輯:此外,你可能想要做

$ci->db->query("SELECT category ... WHERE category_id=?", array($cat));

,而不是你現在有什麼,因爲你當前的查詢是易患SQL注入,如果你的函數被調用,比其他一些東西。