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>
9 ответов
Вы можете использовать вспомогательную функцию $query->num_rows()
возвращает количество строк, возвращаемых запросом. Вы можете использовать так:
$query = $this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
используйте этот код:
$this->db->where(['id'=>2])->from("table name")->count_all_results();
или
$this->db->from("table name")->count_all_results();
замените запрос внутри функции модели следующим
$query = $this->db->query("SELECT id FROM home");
в виде:
echo $query->num_rows();
для подсчета всех строк в таблице:
echo $this->db->count_all_results('table_name');
для подсчета выбранных строк из таблицы:
echo $this->db->where('name', $name)->count_all_results('table_name');
это то, что сделано, чтобы решить ту же проблему. Я решил это, создав функцию, которая возвращает результат запроса таким образом:
function getUsers(){
$query = $this->db->get('users');
return $query->result();
}
/ / вышеуказанный код может идти в user_model или независимо от вашей модели.
Это позволяет мне использовать одну функцию для результата и количества возвращаемых строк.
используйте этот код ниже в вашем contoller, где вам нужен счетчик, а также массив результатов().
//This gives you the user count using the count function which returns and integer of the exact rows returned from the query.
$this->data['user_count'] = count($this->user_model->getUsers());
//This gives you the returned result array.
$this->data['users'] = $this->user_model->getUsers();
надеюсь, это поможет.
Если вы действительно хотите считать все строки. Вы можете использовать это в функции модели:
$this->db->select('count(*)');
$query = $this->db->get('home');
$cnt = $query->row_array();
return $cnt['count(*)'];
она возвращает одно значение, то есть количество строк
вы можете попробовать это
$this->db->where('field1',$filed1);
$this->db->where('filed2',$filed2);
$result = $this->db->get('table_name')->num_rows();
Попробуйте Это :) Я создал мою по модели подсчета всех результатов
в 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']
);
}
чтобы подсчитать все строки в таблице:
:
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;
}