【发布时间】:2013-10-24 07:02:17
【问题描述】:
我被这个愚蠢的问题困住了好几次,我知道我可能犯了一些愚蠢的错误,基本上我有一个控制器,它调用模型函数并返回数据,然后将它分配到一个数组中,但是我在非对象成员错误时继续调用成员函数 num_rows,
我的控制器功能是:
public function registerNewLease()
{
$this->load->model('AnnualBudget');
$alreadyExist = $this->AnnualBudget->checkAlreadyExist($client_block_ID);
if ($alreadyExist == FALSE)
{
// code if nothing found
} else
{
for ($i=0; $i < $alreadyExist->num_rows(); $i++)
{
$row = $alreadyExist->row($i);
$FY_budget_ID[$i] = $row->FY_budget_ID;
}
}
}
My model is :
public function checkAlreadyExist($client_block_ID)
{
$this->db->select('FY_budget_ID');
$this->db->where('client_block_ID', $client_block_ID);
$query = $this->db->get('fy_budget');
if ($query->num_rows() >= 1)
{
return $query;
} else
{
return FALSE;
}
}
错误出现在调用 num_rows 函数的 else 部分...
【问题讨论】:
-
那么可能 $this->db->get() 返回
false而不是一个对象。在$this->db->get()之后放置一个var_dump($this->db->last_query())并检查SQL 语句 -
我不确定
$this->db->get()是否返回一个对象 -
我同意帕特里克的观点。如果未检查查询结果是否成功,这种情况很常见。
-
如果它返回 FALSE,那么控件应该转到 return 语句的 true 部分而不是转到 else 部分。它正在返回一些东西,并且使用 var_dump 我找到了 bool(true),它我没有回来...
标签: php mysql codeigniter