질문 Q #19394
ci 로그인 문의 드립니다~~
minju84 2018-01-31 10:38:37

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 생초보라.. 선배님들 조언부탁드립니다..ㅠ

답변 4
#1 배강민 2018-01-31 10:42:18

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

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

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

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

#2 minju84 2018-01-31 11:32:50

답변 감사드립니다`~~

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

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

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

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