Php 从记录集中获取下一行和上一行

Php 从记录集中获取下一行和上一行,php,codeigniter,Php,Codeigniter,我正在尝试使用Codeigniter的活动记录检索数据库中的下一行 型号 public function getNextRow() { $this->db->where('id', 1); $this->db->limit(1); $query = $this->db->get('portfolio_shots'); return $query->next_row(); } 控制器 public function tes

我正在尝试使用Codeigniter的活动记录检索数据库中的下一行

型号

public function getNextRow()
{
    $this->db->where('id', 1);
    $this->db->limit(1);
    $query = $this->db->get('portfolio_shots');
    return $query->next_row();
}
控制器

public function test()
{
    $nxt = $this->Portfolio_model->getNextRow();
    echo $nxt->id;
}
输出

为什么我会出错

“正在尝试获取非对象的属性“id”

返回:

结果集的下一行,如果不存在则为NULL:

因此,如果没有下一个结果集,您将得到错误

“正在尝试获取非对象的属性”

因为
$nxt
为空且不是结果集,因此不能
$nxt->id

您会遇到这种情况,因为您的查询将结果集限制为仅1行(因此不再有行)

无论如何,您可以在模型中处理此问题(取消限制):

在控制器中(如果到达最后一行,则处理案例):

public function getNextRow()
{
    $query = $this->db->get('portfolio_shots');
    return $query->next_row();
}
public function test()
{
    $nxt = $this->Portfolio_model->getNextRow();
    if($nxt){
      $nxt->id;
    }else{
      echo 'EOF';
    }
}