Подсчет количества результатов, возвращаемых в результате базы данных в CodeCigniter

StackOverflow https://stackoverflow.com/questions/3667715

Вопрос

Я не имею большого обнаружения удачи, когда запрос базы данных в CodeIgniter возвращает нулевые результаты. У меня был хороший просмотр записей о функции Count 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 на моем ноутбуке Dev.

Это было полезно?

Решение

Посмотри на $query->num_rows (<- кликабельный).

Другие советы

Лучшее, что нужно сделать в вашей модели, заключается в следующем:

$query = $this->db->something()....
...
...
if ( $query->num_rows() > 0 )
{
    return $query->result();
}
else
{
    return FALSE;
}

Затем в вашем контроллере или представлении вы сделаете следующее:

if ( !empty($my_db_result) ) 
{
    ......
}

Этот процесс позволяет ответить на результат на основе типа результата. Если строки могут быть получены, это вернет массив, из которых элементы могут быть подсчитаны функцией Count () PHP. Поскольку второй блок проверяет, является ли результатом пустым (обратите внимание, что «false» обрабатывается как пустые), вы не будете ударяться ни к любым вопросам (например, при использовании петли FORACH), и вы можете указать, что делать в случае, если нет Результаты.

Пытаться if(isset($result) && count($result)) В файле своего просмотра, затем внутри оператора IF Вы можете написать код, который вы хотите выполнить, когда вставки в вашей БД более 0 ... Удачи!

Если вы поставили count($result) в if Заявление тогда, когда он ввел, он возвращается только 1.

Можешь попробовать$query->num_rows() по-другому.

Например, я считаю, чтобы показать администраторы, подключенные пользователи ANS

База данных

У пользователей я добавляю таблицу: [Состояние] [INT] [1

У пользователей также у меня есть: [Роль] [varchar] [255

Обновите статут до 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;
    }

Граф OnLigne:

Контроллер:

$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>

Я подъюжу это, и это работает для меня

Контроллер

$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;
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top