【问题标题】:recursive function in codeigniter returns 500 errorcodeigniter 中的递归函数返回 500 错误
【发布时间】:2014-06-26 19:00:34
【问题描述】:

我有下一个递归函数,不断返回 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);

【问题讨论】:

    标签: php function codeigniter recursion


    【解决方案1】:
    $this->get_parent($row->category_id);
    

    调用 get_parent 时使用的 ID 与您最初调用它时使用的 ID 相同,因此它会一直递归,直到出现堆栈溢出。

    仅供参考,根据您的数据库,应该可以在纯 SQL 中执行您想要的操作,而无需多次查询。

    编辑:另外,您可能想要这样做

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

    而不是您现在所拥有的,因为如果您的函数被调用时使用的不是数字,那么您当前的查询很容易受到 SQL 注入的影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 2013-04-24
      • 1970-01-01
      相关资源
      最近更新 更多