Codeigniter.Проверка сеанса, num_rows () возвращает общее количество - PullRequest
0 голосов
/ 18 декабря 2011

У меня довольно интригующая проблема, и я понятия не имею, почему.

Используя приведенный ниже код, если установлен идентификатор сеанса, оператор echo возвращает '1' - он находит пользователя с такимидентификатор сеанса в базе данных .. simple.

Если пользователь вышел из системы, а для параметра my_session_id установлено значение 0, так что в базе данных не найдено ни одного результата, оператор echo возвращаетколичество строк в таблице ... То есть, как будто единственным утверждением было $query=$this->db->get('users');

Есть идеи, почему?

$session=$this->session->userdata('my_session_id');
$this->db->where('session',$session);
$query=$this->db->get('users');

$count=$query->num_rows();



//echo $session."<br>";
echo $count;

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

Является ли столбец session типа users табличного или числового типа?Если это целое число, ваш код должен работать;однако, если это символьный тип, ваш код выдает следующий SQL:

SELECT * FROM (`users`) WHERE `session` = 0

, который вернет все записи в таблице пользователей.Это должно быть:

SELECT * FROM (`users`) WHERE `session` = '0'

Чтобы сделать это, ваш код должен выглядеть примерно так:

$this->db->where('session', (string)$session);

Надеюсь, эта помощь!

0 голосов
/ 18 декабря 2011

Возможно, потому что пропущенное значение сеанса возвращает ноль, что затем приводит к игнорированию части where. Добавление кавычек может помочь:

$this->db->where('session',"$session");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...