CI 묻고 답하기

제목 초보자에게 도움을.. select문 where unkown column 오류
글쓴이 Tier 2 작성시각 2015/06/22 10:22:14
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14814   RSS
연습삼아 id와 pw를 받아서 db와 대조 후 로그인하는 기능을 만들어보고 있습니다.
    function login($id, $password){
        $sql = "SELECT * FROM member WHERE user_id = ".$id." AND  password = ".$password;
        $query=$this->db->query($sql);
        $result = $query->row();
        return $result;
}

모델에 써넣은 내용인데요 로그인 페이지에서 입력하면

Unknown column 'kjlk' in 'where clause'

SELECT * FROM member WHERE user_id = kjlk AND password = fdcx

이렇게 나오네요 물론 id값과 password는 제가 임의로 집어넣은 값입니다.

 다음글 insert 할때 질문이있습니다. (2)
 이전글 <뷰에 동적으로 데이터 추가하기>에서 인자 ... (2)

댓글

한대승(불의회상) / 2015/06/22 11:05:48 / 추천 0
쿼리문 작성이 잘 못 되었습니다.
 
$sql = "SELECT * FROM member WHERE user_id = '".$id."' AND  password = '".$password."'";
검색하고자 하는 문자열 값에 ' 로 감싸 줘야 합니다.
이렇게 작성된 sql문은 해킹에도 위험하니 아래 처럼 해주세요.
 
$sql = "SELECT * FROM member WHERE user_id = ? AND  password = ?";
$this->db->query($sql, array($id, $password));
' 에 신경 쓸필요도 없고 해킹에도 안전 합니다.
Tier 2 / 2015/06/22 11:18:40 / 추천 0
아래 쓰인 방법대로 해서 해결되었습니다! 감사합니다

그런데 첫번째 방법은 안되더라고요 왜인지는 모르겠지만..
저도 '를 넣어야 하나 해서 써봤는데 첫번째로 PHPLint에서 잡아내고요
PHP Parse error: syntax error, unexpected '"'"' (T_CONSTANT_ENCAPSED_STRING)  $sql = "SELECT * FROM member WHERE user_id = '".$id."' AND password = '".$password"'";
두번째로는 그냥 무시하고 실행시켜보니까 페이지 전체가 하얀화면만 나오게 되더라고요