我的Carros_model.php
中有这个功能,用于带来最后一次插入并将其显示在仪表板中:
public function select_all($limit = 3)
{
$this->db
->select('marca.nome_marca,'
. 'combustivel.nome_combustivel,'
. 'cambio.descricao_cambio,'
. 'DATE_FORMAT(carro.data_criacao, "%d/%m/%Y") as criacao,'
. 'DATE_FORMAT(carro.data_modificacao, "%d/%m/%Y") as modificacao,'
. 'carro.*')
->from('carro')
->join('marca', 'marca.id = carro.id_marca')
->join('combustivel', 'combustivel.id = carro.id_combustivel')
->join('cambio', 'cambio.id = carro.id_cambio')
->order_by('carro.id', 'DESC')
->limit($limit, 0);
$query = $this->db->get();
foreach ($query->result_array() as $row) {
$data[] = $row;
}
$query->free_result();
return $data;
}
它工作正常,但我发现如果表是空的,则错误
致命错误:在布尔值
上调用成员函数result_array()
被抛出。我该如何解决这个问题?
答案 0 :(得分:7)
在尝试获取结果之前,您应该检查查询是否有效/有任何行。如果表格为空,则查询不会做任何事情。
$query = $this->db->get();
$data = array();
if($query !== FALSE && $query->num_rows() > 0){
foreach ($query->result_array() as $row) {
$data[] = $row;
}
}
return $data;
P.S。没有理由在$query->result_array()
上使用循环,你可以返回它。它已经是一系列行。
$query = $this->db->get();
$data = array();
if($query !== FALSE && $query->num_rows() > 0){
$data = $query->result_array();
}
return $data;
答案 1 :(得分:0)
在代码中进行此更改(在$ query之后添加$ data数组):
$query = $this->db->get();
$data = Array();
foreach ($query->result_array() as $row) {
$data[] = $row;
}
这是因为$ data变量不存在,除非你在循环之前创建一个空变量,以防没有结果。