【问题标题】:num_rows() and result_array() in the same function ? codeigniternum_rows() 和 result_array() 在同一个函数中?代码点火器
【发布时间】:2015-03-25 02:13:13
【问题描述】:

我有一个问题。 我在模型中有一个功能可以选择产品:

public function getProducts()
{
    $this->db->select(dbColumnProductsId . ',' . dbColumnProductsName . ',' . dbColumnProductsImage . ',' . dbColumnProductsPrice . ',' . dbColumnProductsStock . ',' . dbColumnCategoryId . ',' . dbColumnCategoryName);
    $this->db->join(dbTableCategory, dbTableCategory . '.' . dbColumnCategoryId . '=' . dbTableProducts . '.' . dbColumnProductsCategory);
    $this->db->order_by(dbColumnProductsId, 'DESC');
    $this->db->from(dbTableProducts);
    $query = $this->db->get();

    if($query->num_rows() > 0)
    {
        return $query->result_array();
    }

    return FALSE;
}

但现在我需要对这些产品进行分页。如何在同一个函数中使用“num_rows”函数?这样就必须创建一个单独的函数。对不起我的英语不好

【问题讨论】:

    标签: php mysql codeigniter activerecord


    【解决方案1】:

    您可以将它们都添加到一个数组中,例如

    public function getProducts()
    {
        $this->db->select(dbColumnProductsId . ',' . dbColumnProductsName . ',' . dbColumnProductsImage . ',' . dbColumnProductsPrice . ',' . dbColumnProductsStock . ',' . dbColumnCategoryId . ',' . dbColumnCategoryName);
        $this->db->join(dbTableCategory, dbTableCategory . '.' . dbColumnCategoryId . '=' . dbTableProducts . '.' . dbColumnProductsCategory);
        $this->db->order_by(dbColumnProductsId, 'DESC');
        $this->db->from(dbTableProducts);
        $query = $this->db->get();
    
        $retun_array = array();
        $retun_array['rows'] = $query->num_rows();
        if($retun_array['rows'] > 0)
        {
             $retun_array['data']= $query->result_array();
        }
    
        return $retun_array;
    }
    

    并且您可以在获得模型返回后在控制器中使用它,例如,如果您将返回数据存储在 $retun_array 中

    $rows = $retun_array['rows'];
    if($rows > 0){
        $data = $retun_array['data']
    }
    

    【讨论】:

      【解决方案2】:

      要分页必须经过三个阶段来处理:

      • 统计产品,可以使用$db->count_all_results();函数
      • 找到极限并开始
      • 按限制选择产品并开始

      不要使用 num_rows,因为它太慢了

      【讨论】:

        猜你喜欢
        • 2013-01-30
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        • 2013-06-05
        相关资源
        最近更新 更多