2017-02-22 15 views
0

Я пытаюсь выполнить поиск по шаблону с использованием CI.CodeIgniter Wildcard Query

Я проверяю сеансы loggedin. Если пользователь зарегистрирован на нескольких устройствах, отображается всплывающее окно. Чтобы проверить, зарегистрирован ли пользователь на любом другом устройстве, я выполняю подстановочный запрос, чтобы проверить наличие его идентификатора пользователя в столбце user_data и вернуть количество строк. Проблема, с которой я столкнулся, - даже если я впервые вхожу в систему, он переходит к предложению else, а не к условию if или if-else.

В моем контроллере я проверяю, достигает ли он предложения else, отображает всплывающее окно. Однако он переходит к предложению else, даже если кто-то вступает в систему в первый раз.

Модель:

public function update_bool($id) { 
     $this->db->select('user_data'); 
     $this->db->from('ci_sess'); 
     $this->db->like('user_data', $id, 'both'); 
     $counter = $this->db->get()->row(); 
      if (empty($counter)) $counter = 0; 
      else if($counter === 1) $counter = 1; 
      else $counter = 3; 
     return $counter; 
    } 

Контроллер:

$counter = $this->ion_auth_model->loggedin_status_update_bool($userId); 
     if($this->ion_auth_model->loggedin_status_update_bool($userId) === 3) { 
      warning('multiple_session_title', 'multiple_session_text'); 
     } 

ответ

1

Вам нужно подсчитать количество строк возврата в запросе. И, основываясь на отсутствии записей, ваше состояние будет работать. В настоящее время он возвращает одну строку массива типов. And $counter as array to match else if condition will always fail.

Надеюсь, это поможет вам.

.... 
$query = $this->db->get(); 
$counter = $query->num_rows(); 
if (empty($counter)) { 
    $counter = 0; 
}else if($counter === 1) { 
    $counter = 1; 
} else { 
$counter = 3; 
} 
return $counter; 
0

Я думаю, что ваш стенографии может быть выключен немного, и если я понимаю, что вы имеете в виду то, что будет несколько сеансов для одного пользователя в таблице означает, что вы не можете получить его с помощью -> строка().

Try так:

public function update_bool($id) { 
    $this->db->select('user_data'); 
    $this->db->from('ci_sess'); 
    $this->db->like('user_data', $id, 'both'); 
    $query = $this->db->get(); 

    return $query->num_rows(); // This will give you now many times this user exists in the database, eg 0, 1, 2, 3 
} 

Затем очистить ваш контроллер так что вы не вызывая базу данных дважды:

$counter = $this->ion_auth_model->loggedin_status_update_bool($userId); 
if($counter == 3) { 
     warning('multiple_session_title', 'multiple_session_text'); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^