6

当 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。

4

6 回答 6

14

看看$query->num_rows(<-可点击)。

于 2010-09-08T12:45:18.740 回答
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 循环时)并且您可以指定在没有的情况下要做什么结果。

于 2010-09-08T14:05:35.940 回答
0

尝试if(isset($result) && count($result))您的视图文件,然后在 if 语句中,您可以编写当您的数据库中的插入量超过 0 时要执行的代码......祝您好运!

于 2010-09-08T13:48:08.400 回答
0

如果你count($result)输入if语句,那么当它成功时,它只返回1.

你可以尝试 $query->num_rows()不同的方式。

于 2010-09-09T11:46:39.420 回答
0

例如,我数以显示连接的管理员和连接的用户

数据库

在用户中我添加表:[status] [int] [1]

在用户中我也有:[角色] [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;
    }

在注销()中将状态更新为离线

注销控制器:

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;
    }

在线计数:

控制器:

$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>
于 2016-04-02T16:12:02.703 回答
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;
        }
    }
}
于 2016-04-02T16:48:49.980 回答