更新
我尝试在sizeof($result)
上使用controller
,结果超过1,所以我认为 错误在控制器的某个地方
我尝试运行此查询:
$query = "SELECT * FROM `hospital` WHERE name LIKE '%$keyword%' OR address LIKE '%$keyword%' OR telp LIKE '%$keyword%'";
$keyword
取决于应用中的用户类型。
这是CI查询:
$query = $this->db->select('*')
->from($table)
->like('name', $keyword, 'both')
->or_like('address', $keyword, 'both')
->or_like('telp', $keyword, 'both')
->get()
->result_array();
上面的查询始终只返回第1行。
这是在控制器中:
if(sizeof($result) > 0)
{
foreach($result as $hospital)
{
if($hospital)
{
$this->response(array('result' => 'true',
'id' => $hospital['id'],
'name' => $hospital['name'],
'address' => $hospital['address'],
'telp' => $hospital['telp']), 200); // 200 being the HTTP response code
}
}
}
else
{
$this->response(array('result' => 'false'), 404);
}
我的错误在哪里?当我试图在phpmyadmin
中硬输入查询时,查询运行完美(返回所有行)。
感谢您的时间
答案 0 :(得分:0)
您正在将查询结果分配给$query
变量,然后尝试迭代未在任何位置声明的$result
数组。尝试:
if(sizeof($query) > 0) {
// ...
}
或将$query
更改为$result
。
答案 1 :(得分:0)
以下是处理此要求的另一种方法。
$this->db->select('*')
->from($table)
->like('name', $keyword, 'both')
->or_like('address', $keyword, 'both')
->or_like('telp', $keyword, 'both');
$query = $this->db->get();
if ($query->num_rows() > 0) {
$result= $query->result_array();
//and bla bla
}
使用
$query->num_rows()
我们也可以从模型中返回总行数。 如果num_rows为零,您还可以在模型类中进行查询返回false,如果函数返回数组或false,则从控制器检查。
答案 2 :(得分:0)
我觉得你不需要 - > result_array();
- > get()就足够了。
删除所有 - > result_array()实例。