CI 묻고 답하기

제목 Medel insert 질문
글쓴이 Louis 작성시각 2015/09/07 16:07:52
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 17409   RSS
안녕하세요?
혼자 개발하며 삽질하고 있는 왕초보입니다.

개발중 Medel을 이용하여 insert 시키고자 하니

Call to a member function insert() on a non-object in

이 에러는 무엇인가요? 2일넘도록 삽질중입니다... $this->db->set();을 넣으면 똑같은 에러를 내뱉구요..

하두 삽질하다가 답답한 마음에 질문 올립니다.

class Member_model extends CI_Model {
 
    function __construct()
    {
        parent::__construct();
        $this->load->database();
    }
    
    function Member_add($option){
            /* $this->load->database();
            $this->db->set('userid', $option['userid']);
            $this->db->set('userpw', $option['userpw']);
            $this->db->set('username', $option['username']);
            $this->db->set('phone', $option['phone']);
            $this->db->set('phone_device', $option['phone_device']);
            $this->db->set('email', $option['email']);
            $this->db->set('add_country', $option['add_country']);
            $this->db->set('add_address', $option['add_address']);
            $this->db->set('add_zip', $option['add_zip']);
            
            $this->db->insert('member'); */
            //$this->load->library['database'];
            
            $data = array('userid'=>$option['userid'],
                    'userpw'=>$option['userpw'],
                    'username'=>$option['username'],
                    'phone'=>$option['phone'],
                    'phone_device'=>$option['phone_device'],
                    'email'=>$option['email'],
                    'add_country'=>$option['add_country'],
                    'add_address'=>$option['add_address'],
                    'add_zip'=>$option['add_zip']
            );
        
            echo "111111111";
            echo $data['userid'];
            //$this->db->insert_string('member', $data);
            $this->db->insert('member', $this);
            /* $result = $this->db->insert_id();
            return $result; */
    }
}

코드는 현재 이렇습니다. 간단한 정보 몇개 넣는거 조차 헤매네요....

에코로 찍은건 다 나옵니다. 하지만 insert에서 막혀버려서...

도움좀 부탁드리겠습니다.
 다음글 mysql hex암호화 질문입니다. (2)
 이전글 한 페이지내 폼이 두개 존재하는 경우 처리 방법 (3)

댓글

들국화 / 2015/09/07 16:11:13 / 추천 0
데이타 베이스를 로딩하지 않아서 그런것 같네요.
오토로딩 하거나. $this->load->database(); 를 명시해 주세요.
Louis / 2015/09/07 16:38:21 / 추천 0
들국화님 감사합니다. function __construct() 여기에 명시해두었는데 문법에 맞지 않는건가요??
한대승(불의회상) / 2015/09/07 17:08:26 / 추천 0
모델코드에 특별한 이상이 있어 보이지는 않습니다.
__construct()에 명시해 두면 문법에도 맞습니다.
하지만 들국화님 말대로 DB 로딩이 제대로 되지 않았습니다.

이럴 경우 대부분 DB 설정이 잘 못되었거나 php에 mysql 관련 라이브러리가 없는 경우 입니다.
DB 설정은 application/config/database.php 를 확인해 보시고, mysql 관련 라이브러리가 있는지 phpinfo() 를 통해서 확인 보세요.
Louis / 2015/09/07 17:43:37 / 추천 0
불의회상님 감사합니다. phpinfo()확인하였습니다. 일반 php로 mysql연동 되는거 까지 확인하였습니다. 값이 잘 들어가고 잘 보여집니다... DB설정 부분입니다. 비밀번호와 데이터베이스명은 노출하지 않겠습니다.

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

잘못된 부분 지적 부탁드립니다... 하 이제 치져갑니다...
한대승(불의회상) / 2015/09/07 17:52:42 / 추천 0
웹호스팅에서 테스트중이라면 $db['default']['pconnect'] = TRUE; 값을 FALSE 로 바꿔 보세요.
Louis / 2015/09/07 17:59:58 / 추천 0
Fatal error: Call to a member function insert() on a non-object in

바꾸고 해보았지만 동일합니다............. 왜 이런 시련이 있을까요
kaido / 2015/09/07 18:29:38 / 추천 0
그 호스팅 mysqli 설치 안된것 아닌가요? [mysql 아닙니다.]
들국화 / 2015/09/08 09:25:28 / 추천 0
터미널에서 위 설정으로 접속이 되는지도 확인해 보세요.
pwrlove / 2015/09/08 12:54:45 / 추천 0
코드이크나이터 버전이 얼마인지 모르겠지만,
제가 2.2 버전을 쓰고 있는데.

mysqli -> mysql로 바꿔서 한번 테스트해 보세요.
설정이나 다른것은 특별한 이상이 없어 보입니다.

아님, 디비 오류로그를 한번 보세요.
Louis / 2015/09/09 10:27:26 / 추천 0
구글링하다가 system/database 파일을 받아서 덮어씌워보니 해결되었습니다..... 뭐지?란 생각이 드네요.
system은 건들지도 않았는데.. 뭔가 버그가 있나봅니다.
코드이그나이터 사이트에서 받은건데...
한대승(불의회상) / 2015/09/09 11:23:50 / 추천 0
@Louis www.codeigniter.com 에서 다시 다운받아 덮어 써 보세요.