제목 | 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 18:00:08 /
추천
0
|
코드원
/
2012/04/24 23:39:27 /
추천
0
//불의 회상님, CI_Controller에서 상속받아진거 맞는거 같은데요.
class Auth extends CI_Controller{Auth 컨트롤러 그대로 사용하고 있으니깐요. |
한대승(불의회상)
/
2012/04/25 10:43:32 /
추천
0
코드윈// 그렇군요..
is_username_available()가 Auth의 멤버 함수 라면 $this->load->database()를 이용하여 DB를 로드 한 후 $this->db->select() 와 같이 사용되는 함수들은 당연히 동작 하는게 정상일텐데요. 에러 코드들을 보면 $this 에 로드된 DB라이브러리 들이 정상적으로 동작하지 않는것으로 보입니다. $CI =& get_instance();를 사용한다는 것 자체가 이상하다라는 생각이 들어서 물어본겁니다. |
코드원
/
2012/04/25 12:01:57 /
추천
0
//불의 회상 저도 이해가 안되요. 함수내에 일일 인스턴스와 db 로드를 할수 없는 노릇이고 참 답답하네요
Ci다시 설치해서 해봐야 할것 같아요
|
milosz
/
2012/04/26 11:10:59 /
추천
0
tank_auth 라이브러리를 로드한 후에 is_username_available 를 어디서 어떻게 사용하신건지 소스 올려주실 수 있나요? 컨트롤러에서 $this->tank_auth->is_username_available(); 식으로 라이브러리를 통해 호출해서 사용한 것이 아니라면 위와 같은 에러가 날 것 같은데요.
|
코드원
/
2012/04/26 17:01:42 /
추천
0
//milosz님 답변 감사합니다. tank_auth를 제가 수정해서 사용하는것이 아닌. 있는 그대로 다운 받아서 사용하고 있어요. 다른 곳 전혀 수정한 것 없구요. 소스를 보니
$this->tank_auth->is_username_available();이 부분이 아래처럼 되어 있더군요. function is_username_available($username) { return ((strlen($username) > 0) AND $this->ci->users->is_username_available($username)); } function create_user($username, $email, $password, $email_activation) { if ((strlen($username) > 0) AND !$this->ci->users->is_username_available($username)) { $this->error = array('username' => 'auth_username_in_use'); } elseif (!$this->ci->users->is_email_available($email)) { $this->error = array('email' => 'auth_email_in_use'); } else { // Hash password using phpass $hasher = new PasswordHash( $this->ci->config->item('phpass_hash_strength', 'tank_auth'), $this->ci->config->item('phpass_hash_portable', 'tank_auth')); $hashed_password = $hasher->HashPassword($password); $data = array( 'username' => $username, 'password' => $hashed_password, 'email' => $email, 'last_ip' => $this->ci->input->ip_address(), ); if ($email_activation) { $data['new_email_key'] = md5(rand().microtime()); } if (!is_null($res = $this->ci->users->create_user($data, !$email_activation))) { $data['user_id'] = $res['user_id']; $data['password'] = $password; unset($data['last_ip']); return $data; } } return NULL; }보니깐 위에 처럼 되어 있네요. |
milosz
/
2012/04/27 13:28:06 /
추천
0
음... tank_auth를 받아서 codeigniter에 설치하고나서 아이디를 생성하면 해당 에러가 나타나나요? 말씀하신 인증 페이지가 기존에 있는 auth 컨트롤러 외에 별도의 컨트롤러에서 만드셨나요? 뭔가 설치가 잘못된 것인지.. 흠;
|
코드원
/
2012/04/27 14:50:07 /
추천
0
// milosz 별도로 컨트롤러를 생성해서 한건 없구요. 설치가 잘 못 건지도 모르지요. 근데..아직 왜 그런지 모르겠어요.
|
milosz
/
2012/04/27 15:28:12 /
추천
0
일단 작업하시던거 백업하시고 CI와 tank_auth를 다시 올리셔서 해당 부분이 정상 동작 하는지 확인해보셔야 할 것 같아요. ㅜㅜ
|
킹태우님
/
2019/07/01 15:54:23 /
추천
0
application/config/autoload.php 에서 아래 설정 추가하면 해결됩니다. $autoload['libraries'] = array("database"); |
만약 아래와 같이 사용중 이시라면 지금 나오는 에러들은 이해가 안되는데요.. ^^;;