제목 | Call to a member function select() on a non-object | ||
---|---|---|---|
글쓴이 | 코드원 | 작성시각 | 2012/04/24 11:58:19 |
|
|||
Call to a member function select() on a non-object function is_username_available($username) { $this->db->select('1', FALSE); $this->db->where('LOWER(username)=', strtolower($username)); $query = $this->db->get($this->table_name); return $query->num_rows() == 0; }(위에 select('1', FALSE) 부분에서 에러가 나는거 같아요) tank_auth 로 인증페이지를 만드는 중에 위와 같은 에러 메시지가 나왔습니다. DB 연결 설정은 제대로 되어있구요. select()함수 멤버를 콜하는데 non-object라고 나오는데... 이게 무슨 말인지요? 초보입니다. 도움 부탁드리겠습니다. |
|||
다음글 | restful 질문드립니다.. (2) | ||
이전글 | mysql의 password() 어떻게 사용하면 되나요... (4) | ||
변종원(웅파)
/
2012/04/24 12:18:11 /
추천
0
|
코드원
/
2012/04/24 12:23:21 /
추천
0
//웅파님 늘 도움 감사드립니다. 웅파님께서 알려주신대로 해보니깐..여전히 똑같은 메시지입니다.ㅡ,ㅡ
|
코드원
/
2012/04/24 12:28:10 /
추천
0
더욱 웃긴건 그 해당라인을 주석으로 처리하고 where 부분만 해서 하면 where라인이 위와 같은 에러메시지가 나온다는거에요. username 은 잘 넘어오구요.
|
변종원(웅파)
/
2012/04/24 12:46:36 /
추천
0
그럼
$this ->table_name 이 값이 제대로 나오는지 찍어보시고
|
한대승(불의회상)
/
2012/04/24 12:49:56 /
추천
0
DB설정에 문제가 없다면...
$this->load->database();로 DB가 정상적으로 로딩 되어 있는지 확인해 보세요. |
코드원
/
2012/04/24 12:53:42 /
추천
0
//웅파님 일단 3,4라인 주석으로 처리하고 $this->table_name 로 찍어보니까 users라고 찍혀요.
//불의 회상님 답변 감사합니다. $this ->load->database(); 넣어서 해봐니Call to a member function database() on a non-object 똑같은 에러 메시지가 나옵니다. |
변종원(웅파)
/
2012/04/24 12:58:32 /
추천
0
지금 tank_auth의 모델인 users 에서 작업하시는거죠?
database() 조차 못 찾는 것을 보면 $this 객체가 선언이 안된것 같네요. $CI =& get_instance(); $CI->load->database(); 위 두 줄을 3번 라인전에 넣고 해보세요. $this 라고 되어 있는 부분도 전부 $CI로 바꾸시구요. |
코드원
/
2012/04/24 13:01:39 /
추천
0
// 웅파님 말씀대로 해보니깐.. 넘어가네요. $this 선언을 어디서 해야하나요?
그럼 $CI 수정을 안해도 될거 같은데요? |
코드원
/
2012/04/24 13:03:41 /
추천
0
혹시 tank_auth users.php에서 아래와 같이 되어 있어서 그런건가요?
function __construct() { parent::__construct(); $ci =& get_instance(); $this->table_name = $ci->config->item('db_table_prefix', 'tank_auth').$this->table_name; $this->profile_table_name = $ci->config->item('db_table_prefix', 'tank_auth').$this->profile_table_name; } |
변종원(웅파)
/
2012/04/24 13:36:14 /
추천
0
tank_auth users 모델을 사용하시기 위해서는 컨트롤러에서 tank_auth 라이브러리가 로딩되어 있어야 할 겁니다.
tank_auth의 구조가 라이브러리를 로딩하고 그 라이브러리에서 모델을 로딩하는 구조인데 그렇게 안되어 있으면 에러가 날겁니다. auth 컨트롤러 보시면 tank_auth 라이브러리의 함수들을 사용하지 users 모델을 직접 사용하지는 않습니다. 아마도 컨트롤러에서 직접 사용하셔서 그럴 수도 있습니다. |
코드원
/
2012/04/24 15:50:38 /
추천
0
//웅파님. auth컨트롤러에서 이미 tank_auth 라이브러리를 이미 로딩을 했어요.
function __construct() { parent::__construct(); $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $this->load->library('security'); $this->load->library('tank_auth'); $this->lang->load('tank_auth'); }auth 컨트롤러 이미 로딩이 되어 있음에도 에러가 나요. |
milosz
/
2012/04/24 16:04:36 /
추천
0
컨트롤러에서 $this->tank_auth->is_username_available() 식으로 사용하신거죠?
|
코드원
/
2012/04/24 16:16:45 /
추천
0
//milosz님, 아니요. tank_auth 있는 그대로 사용중이에요. 그리고 컨트롤러에서 tank_auth라이브러리를 로딩해줬음에도 저런 애러가 나네요.
|
한대승(불의회상)
/
2012/04/24 17:12:25 /
추천
0
class 상속은 어떻게 받으 셨나요?
|
코드원
/
2012/04/24 17:26:12 /
추천
0
// 클래스 상속이랄것도 없어요. 그냥 tank_auth 압축파일 그대로 받아서 사용중이에요. 변경하거나 그런거 없어요.
|
$this
->db->select(
'1'
, FALSE); <- 이 부분은 필드나 테이블명을 백틱(`)으로 감싸지 말라는 것인데 1만 준다면 필요가 없을 것 같습니다.
$this
->db->select(
'1'
);
로 해보세요