2011-12-18 7 views
0

かなり興味深い問題が発生していますが、私はなぜそれがわかりません。Codeigniter。セッションを確認して、num_rows()が総計を返します

以下のコードを使用して、セッションIDが設定されている場合、echo文は '1'を返します。データベースのセッションIDを持つユーザーを見つけます。

しかし、ユーザがログアウトし、データベースに結果が見つからないように 'my_session_id'が設定されている場合、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

最後のクエリが 'echo $ this-> db-> last_query();'を使って確認できます。適切なクエリが表示されているすべての場合に適切なクエリが – Pradeep

+0

で形成されているかどうかチェックできますか?* strange * –

答えて

0

おそらく、欠落しているセッション値がゼロを返すため、where部分が無視されるためです。引用符が役立つかもしれない追加:

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

usersテーブルの文字型または数値型のsessionコラムですか? 整数の場合、コードは機能します。しかし、それが文字型であれば、コードは次のSQLを投げています:

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

ユーザテーブルのすべてのレコードを返します。これは、ことがあります。このヘルプ

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

希望:

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

これを行うためには、あなたのコードのようなものである必要があります!

関連する問題