codeigniter得到num_rows的数量

时间:2017-12-14 09:15:35

标签: php mysql codeigniter

这是控制器

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
$data['num_row'] = count($data['new_grievances'] );
print_r($data['new_grievances']);
print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

这是我的模特

function get_members() {
    // $query = $this->db->get('enquiry');
    // return $query;
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    $query = $this->db->get(); 
    return $query;
}

我想得到行数和行数。 在这里,我执行mysql查询 $ data [&#39; new_grievances&#39;] 行数为0.因此输出 $ data [&#39; num_row&#39;] < / strong>必须返回零。但我的结果为1。 然后我打印 $ data [&#39; new_grievances&#39;] 值,它输出为

CI_DB_mysqli_result Object ( [conn_id] => mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 12 [host_info] ......

我不知道如何解决这个问题提出一些想法

5 个答案:

答案 0 :(得分:3)

将代码从return $query;更改为return $query->result();,您也可以在视图中使用$data并计算控制器中的总结果。

这是控制器

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
    $data['num_row'] = count($data['new_grievances'] );
    print_r($data['new_grievances']);
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

这是我的模特

function get_members() {
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    $query = $this->db->get(); 
    return $query->result();
}

答案 1 :(得分:1)

请按照以下几行。

public function index()
{
    $data['page_title'] = 'Home';
    $new_grievances = $this->admin_home->get_members();
    $data['num_row'] = $new_grievances->num_rows();
    print_r($new_grievances->result());
    $data['new_grievances'] = $new_grievances->result()
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

答案 2 :(得分:1)

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
    /*Old Code
    $data['num_row'] = count($data['new_grievances'] );*/
    //New Code
    $data['num_row'] = $data['new_grievances'];
    print_r($data['new_grievances']);
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

模型

function get_members() {
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    return $this->db->count_all_results();
}

答案 3 :(得分:0)

只需使用以下行从DB

获取结果

$ query = $ this-&gt; db-&gt; get(); $ results = $ query-&gt; result();

并使用以下代码获取找到的行数 $ count = $ query-&gt; num_rows();

答案 4 :(得分:0)

就像我在this similar answer中所说的那样,只要您仅使用 MVC结构的一层中的行计数,声明计数变量就没有真正的收获。 / p>

  • 如果仅在视图中使用该值,则仅在视图中调用count()
  • 如果仅打算在Controller中使用该值,则仅在Controller中调用count()
  • 如果在Controller和View中都需要行计数,请写D.R.Y。代码,并将行计数作为变量存储在Controller中,然后将其传递给View。

最终,我建议您不要使用可通过O(1)函数调用立即访问的数据来膨胀变量范围。