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

时间:2019-12-14 21:37:07

标签: 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 test()
{
    $nxt = $this->Portfolio_model->getNextRow();
    echo $nxt->id;
}

输出

为什么会出现错误

  

“试图获取非对象的属性'id'”

enter image description here

1 个答案:

答案 0 :(得分:1)

next_row()返回:

  

结果集的下一行;如果不存在,则为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';
    }
}