这是我的控制器:
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;
}
我想获取行的行和数量。
在这里,我执行查询 $ data ['new_grievances'] 行号为0,因此 $ data ['num_row'] 的输出必须返回零。
当我至少有一排的结果时,我就会打印 $ data ['new_grievances'] 值:
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] ...
如何在结果集中获得行?
通过此将代码从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();
}
请遵循以下行。
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);
}
只需使用以下行即可从db
获得结果$ query = $ this-> db-> get();$结果= $ query-> result();
并使用以下代码获取找到的行数$ count = $ query-> num_rows();
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();
}
正如我在这个类似答案中所说的那样,只要您仅使用使用在您的MVC结构的一层中计数,就没有真正的增益声明计数变量。
- 如果您仅在视图中使用该值,则仅在视图中调用
count()
。 - 如果您仅在控制器中使用该值,则只会在控制器中调用
count()
。 - 如果您需要在控制器和视图中均需进行行计数,请编写D.R.Y.代码和缓存行将其计数为控制器中的变量,然后将其传递到视图。
最终,我建议您不要用o(1)函数调用可立即访问的数据膨胀可变范围。