【问题标题】:Codeigniter limit for pagination分页的 Codeigniter 限制
【发布时间】:2013-10-03 14:31:36
【问题描述】:

我在codeigniter中做了这个功能:

public function get_users_pagination($q, $perpage, $pagenr, $type = 1)
{
    $query = $this->db->get_where('korisnici_tbl', array("type" => $type), $perpage,$pagenr);
    $this->db->like('email', $q);
    $this->db->or_like('name', $q);
    return $query->result();
}

但是当结果小于 $perpage 变量时,它仍然返回 $perpage 数量的行。

因此,如果 $pagenr 是例如 10 并且有 2 行类型为 1,它只会返回 8 其他类型为 2 的行。

【问题讨论】:

  • echo $this->db->last_query(); 检查你得到的查询是什么我猜or_like 有问题
  • 它返回给我这个并且看起来不错:SELECT * FROM (korisnici_tbl) WHERE type = 2 AND email LIKE '%%' OR name LIKE '%%'限制 10 有 2 行是类型 2,但它返回我 10 行
  • 这是因为它会获取您需要的名称匹配或电子邮件匹配的记录,将您包装起来或放在像type = 2 AND (email LIKE '%%' OR name LIKE '%%' )这样的组中
  • 是的,我注意到了。当我删除 or_like 时,它​​确实工作得很好。那你知道怎么做吗?

标签: php sql codeigniter pagination


【解决方案1】:

您可以像这样对 OR 进行分组

$like = '(email LIKE \'%'.$q.'%\'';
$like .= ' OR name LIKE \'%'.$q.'%\')';
$this->db->where($like);

【讨论】:

    【解决方案2】:

    你可以这样试试:

    $query = $this->db->get_where('korisnici_tbl', array("type" => $type));
    $this->db->like('email', $q);
    $this->db->or_like('name', $q);
    $this->db->limit($pagination_start, $pagination_length);
    

    【讨论】:

      【解决方案3】:

      只要把你的模型功能: $限制 = 3; //要在页面中显示的最大行数:

      【讨论】:

      • 嗨,欢迎来到 stackoverflow。请详细描述答案。明确的答案将帮助人们理解您的意思,并增加选择作为答案的机会
      猜你喜欢
      • 2011-08-21
      • 2016-02-19
      • 2013-06-13
      • 2011-11-01
      • 2020-06-14
      • 1970-01-01
      • 2014-03-17
      • 2011-01-04
      • 2016-04-07
      相关资源
      最近更新 更多