2014-05-09 143 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注入,如果你的函数被调用,比其他一些东西。