我正在尝试使用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'”
答案 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';
}
}