num_rows()和result_array()在同一个函数中?笨

时间:2015-03-25 02:13:14

标签: php mysql codeigniter activerecord

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

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"功能在同一个功能?这样就必须创建一个单独的功能。抱歉我的英语不好

2 个答案:

答案 0 :(得分: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']
}

答案 1 :(得分:0)

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

  • 计算产品,您可以使用 $ db-> count_all_results(); 功能
  • 找到限制并开始
  • 按限制选择产品并开始

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