我遇到了一个相当有趣的问题,我不明白为什么。
利用下面的代码,如果设置了会话ID,则echo语句返回'1' - 它在数据库中找到具有该会话ID的用户.. simple。
但是,如果用户已注销,并且'my_session_id'已设置为0,这样在数据库中找不到结果,则echo语句似乎返回表中的行数... IE就像唯一的陈述是$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;
答案 0 :(得分:0)
可能是因为缺少的会话值返回零,然后导致where部分被忽略。添加引号可能会有所帮助:
$this->db->where('session',"$session");
答案 1 :(得分:0)
session
表格字符类型或数字类型的users
列?
如果它是整数,那么你的代码应该可以工作;但是如果它是一个字符类型,那么你的代码就是抛出SQL:
SELECT * FROM (`users`) WHERE `session` = 0
将返回users表中的所有记录。它必须是:
SELECT * FROM (`users`) WHERE `session` = '0'
为了做到这一点,你的代码应该是这样的:
$this->db->where('session', (string)$session);
希望这有帮助!