CI 묻고 답하기

제목 ci 로그인 문의 드립니다~~
카테고리 일반
글쓴이 minju84 작성시각 2018/01/31 10:38:37
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 910   RSS

class Login_model extends CI_Model 

{

    public function processLogin($id,$pass) 

$sql = "SELECT COUNT(*) FROM manager WHERE id = ? AND pass = ?";

$query = $this->db->query($sql, array($id, $pass));

return $query->num_rows();

    }

}

SELECT  쿼리를 이용해서 POST된 id,pass 값이 데이터베이스에 있을경우 카운터 1을 없을경우 0을

 

반환하는 로직을 짜고있는데 아무리 해도 리턴값이 없다고 나옵니다.. PHP 생초보라.. 선배님들 조언부탁드립니다..ㅠ

 다음글 ci url 문의 드립니다~~~ (4)
 이전글 controllers 나 models 에서 php가 아... (3)

댓글

배강민 / 2018/01/31 10:42:18 / 추천 0

num_rows는 쿼리 결과의 record수를 가져옵니다.

count(*)로 select하셨으니 없으면 0이라는 1개의 record가 나오므로 무조건 1이 리턴되는 로직입니다.

count(*) as cnt 쯤으로 cnt를 리턴하던가

그냥 * 로 record가 나오게 해서 num_rows를 리턴하던가 해야합니다.

minju84 / 2018/01/31 11:32:50 / 추천 0

답변 감사드립니다`~~

$sql = "SELECT * FROM manager WHERE id = ? AND pass = ?";
$query = $this->db->query($sql, array($id, $pass));
return $query->num_rows();
조언주신것 처럼  SELECT 문에서 COUNT(*)을 빼고 진행하였는데
그래도 아직 결과값이 레코드가 있냐 없냐를 따지는거라 무조건 1이 나오는 쿼리네요..
혹시 결과 레코드의 결과값을 가져오려면 어떻게해야될까요?ㅠㅠ
배강민 / 2018/01/31 11:36:21 / 추천 0

어라? id/pass가 올바르지 않은거로 시도해도 1이 나온다고요? 이상하네요 흠.

왜 그런지 상황은 모르겠지만, 결과 레코드를 가져오시려면 http://www.ciboard.co.kr/user_guide/kr/database/results.html 를 참고해보셔요

엽토군 / 2018/02/04 12:41:16 / 추천 0
'로그인'은 이런 식으로 직접 구현하지 마시고 처음부터 ion auth 같은 라이브러리를 쓰시기 바랍니다. 세션유지, 가입로직 구현 등 직접 구현하시면 넘어야 할 산이 많아집니다.