笨。检查会话,num_rows()返回总计数

时间:2011-12-18 00:02:16

标签: codeigniter activerecord

我遇到了一个相当有趣的问题,我不明白为什么。

利用下面的代码,如果设置了会话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;

2 个答案:

答案 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);

希望这有帮助!