我没有太多运气检测Codeigniter中的数据库查询何时返回零结果。我已经很好地阅读了关于PHP计数功能的注释,但我没有更明智!
我从控制器调用查询/视图如下:
$data['result'] = $this->search_model->do_search(set_value('name'));
$data['title'] = "Search results";
$this->load->view('search_view',$data);
该视图为我生成了一个结果表,但是当我尝试捕获一个空结果时,计数总是返回1:
我已尝试if count(array($result))
而if count($result)
那么什么是获得计数的好方法?我在我的开发笔记本电脑上使用Fedora 13和PHP 5.3.3。
答案 0 :(得分:11)
查看$query->num_rows
(< - clickable)。
答案 1 :(得分:8)
您的模型中最好的做法如下:
$query = $this->db->something()....
...
...
if ( $query->num_rows() > 0 )
{
return $query->result();
}
else
{
return FALSE;
}
然后在您的控制器或视图中,您将执行以下操作:
if ( !empty($my_db_result) )
{
......
}
此过程使您可以根据结果类型响应结果。如果可以检索行,这将返回一个数组,其中的项目可以通过PHP的count()函数进行计数。由于第二个块检查结果是否为空(注意“FALSE”被视为空),您将不会遇到任何问题(例如,当使用foreach循环时),并且您可以指定在没有的情况下该怎么做结果
答案 2 :(得分:0)
在您的视图文件上尝试if(isset($result) && count($result))
然后在if语句中,当您的数据库中的插入超过0时,您可以编写要执行的代码...祝您好运!
答案 3 :(得分:0)
如果您将count($result)
放在if
语句中,那么当它成功时,它只返回1
。
你可以试试
$query->num_rows()
以不同的方式。
答案 4 :(得分:0)
例如,我计算显示管理员连接和用户连接
<强>数据库强>
在用户中我添加了表:[status] [int] [1]
在用户中我也有:[role] [varchar] [255]
在登录验证()中将statut更新为1(onligne)
if($this->model_users->can_log_in($email,$pass)){
$update = array('status' => 1);
$this->model_users->update_onligne($email,$update);
redirect('main/members');
和型号:
public function update_onligne($email,$update){
$this->db->where('email',$email);
$this->db->update('users',$update);
return true;
}
在logout()
中将状态更新为离线状态退出控制器:
public function logout(){
$id = $this->session->userdata('id');
$update = array('status' =>0);
$this->model_users->logout($id,$update);
$this->session->sess_destroy();
redirect('main/login');
}
退出模式:
public function logout($id,$update){
$this->db->where('id',$id);
$this->db->update('users', $update);
return;
}
Count Onligne:
控制器:
$data['admin_onligne'] = $this->model_users->count_onligne_admin();
$data['user_onligne'] = $this->model_users->count_onligne_users();
$this->load->view('template/page_left',$data);
型号:
public function count_onligne_admin(){
$query = $this->db->query('SELECT COUNT(status) AS enligneadmin FROM users WHERE status=1 AND role="admin"')->row_object();
return $query->enligneadmin;
}
public function count_onligne_users(){
$query = $this->db->query('SELECT COUNT(status) AS enligneuser FROM users WHERE status=1 AND role="etudiant"')->row_object();
return $query->enligneuser;
}
查看器
<span><?php echo $user_onligne ;?> User en ligne</span>
<span><?php echo $admin_onligne ;?> Admin en ligne</span>
答案 5 :(得分:0)
我贬低这个并且它适合我
<强>控制器强>
$id = $this->session->userdata('id');
if($this->model_users->if_user_dont_have_email($id)){
....
}
模型用户
public function if_user_dont_have_email($id){
$query = $this->db->query("SELECT email FROM users WHERE id='$id'");
if ($query->num_rows() > 0) {
$row = $query->row_array();
if(empty($row['email'])){
return true;
}else{
return false;
}
}
}