php codeigniter计数行

时间:2015-03-10 07:37:02

标签: php codeigniter

我是codeigniter的新手,我想计算数据库表中的所有行,但查询不能检索确切的行总数。 这是模型

public function countRow(){
$query = $this->db->query("SELECT *,count(id) AS num_of_time FROM home");
    // print_r($query->result());
    return $query->result();
}

这是控制器

public function countTotalrow(){
     $data['query'] = $this->home_model->countRow(); 
}

这是视图

foreach ($num_of_time as $row){
    <span><?php print_r($row->id);?></span>

11 个答案:

答案 0 :(得分:27)

您可以使用辅助函数$query->num_rows()

它返回查询返回的行数。您可以这样使用:

$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();

答案 1 :(得分:10)

使用此代码:

$this->db->where(['id'=>2])->from("table name")->count_all_results();

$this->db->from("table name")->count_all_results();

答案 2 :(得分:2)

这就是解决相同问题的方法。我通过创建一个返回查询结果的函数来解决了这个问题:

  local.permissionType = q2.AccessType ;
  local.permissionLevel = q2.AccessLevel ;

  switch( q2.AccessLevel ) {
    case "S" :  local.permissionList = q2.State ;
      break ;
    case "C" :  local.permissionList = ListRemoveDuplicates(ValueList(q2.City)) ;
      break ;
    case "B" :  local.permissionList = ListRemoveDuplicates(ValueList(q2.Building)) ;
      break ;
  }

//上面的代码可以放在user_model或您的模型中。

这使我可以对结果和返回的行数使用一个函数。

在下面的contoller中使用此代码,在其中需要计数以及结果array()。

function getUsers(){
$query = $this->db->get('users');
return $query->result();
}

我希望这会有所帮助。

答案 3 :(得分:1)

如果你真的想要计算所有行数。您可以在模型函数中使用它:

$this->db->select('count(*)');
$query = $this->db->get('home');
$cnt = $query->row_array();
return $cnt['count(*)'];

返回单个值,即行数

答案 4 :(得分:1)

使用此

替换模型函数内的查询
$query = $this->db->query("SELECT id FROM home");

在视图中:

echo $query->num_rows();

答案 5 :(得分:1)

计算表格中的所有行:

echo $this->db->count_all_results('table_name');

从表中计算选定的行:

echo $this->db->where('name', $name)->count_all_results('table_name');

答案 6 :(得分:1)

public function record_count() {
   return $this->db->count_all("tablename");
}

答案 7 :(得分:0)

你可以试试这个

    $this->db->where('field1',$filed1);
    $this->db->where('filed2',$filed2);
    $result = $this->db->get('table_name')->num_rows();

答案 8 :(得分:0)

试试这个:) 我在计算所有结果的模型上创建了

in library_model

function count_all_results($column_name = array(),$where=array(), $table_name = array())
{
        $this->db->select($column_name);
        // If Where is not NULL
        if(!empty($where) && count($where) > 0 )
        {
            $this->db->where($where);
        }
        // Return Count Column
        return $this->db->count_all_results($table_name[0]);//table_name array sub 0
}

您的控制器将如下所示

public function my_method()
{
  $data = array(
     $countall = $this->model->your_method_model()
  );
   $this->load->view('page',$data);
}

然后简单调用模型中的库模型

function your_method_model()
{
        return $this->library_model->count_all_results(
               ['id'],
               ['where],
               ['table name']
           );
}

答案 9 :(得分:0)

要计数表中的所有行:

控制器:

function id_cont() {
   $news_data = new news_model();
   $ids=$news_data->data_model();
   print_r($ids);
}

型号:

function data_model() {
    $this->db->select('*');
    $this->db->from('news_data');
    $id = $this->db->get()->num_rows();
    return $id;
}

答案 10 :(得分:0)

public function number_row()
 {
    $query = $this->db->select("count(user_details.id) as number")
                       ->get('user_details');              
      if($query-> num_rows()>0)
      {
          return $query->row();
      } 
      else
      {
          return false;
      } 
   }