CI 묻고 답하기

제목 다중 db 연결 관련 질문드립니다.
글쓴이 쑤니요 작성시각 2014/02/13 11:44:49
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 16444   RSS
 $active_group = 'default';
$active_record = TRUE;
 
$db['default']['hostname'] = 'xxxxxxx';
$db['default']['username'] = 'xxxxxxx';
$db['default']['password'] = 'xxxxxxx';
$db['default']['database'] = '???????????????';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$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;


database.php 로드 해서 사용 하는데 다중 db에 연결을 해야 합니다
각 사용자 별로 디비를 생성해서 그 사용자가 접근하면 접근자 id로 db생성하고 그 생성된 디비에 접근하는 방식입니다.
codeigniter 초보라 여러 자료를 찾아봐도 몇개의 설정을 해놓고 찾아들어가는 방식만 있고 변수로 설정후 
넘어오는 값에 접근하는 방법이 없어서 질문드립니다
 다음글 파일압축 해제 (4)
 이전글 뷰에서 ajax컨트롤러 로드 (1)

댓글

한대승(불의회상) / 2014/02/13 11:54:43 / 추천 0
디비를 생성해서 주는 방식은 좀 특이하군요.
보안에도 문제가 될텐데....

모델 호출시 디비설정 값을 직접넣어주어 변환하는 방법이 있습니다.

$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('Model_name', '', $config);
http://cikorea.net/user_guide_2.1.0/general/models.html
쑤니요 / 2014/02/13 15:32:39 / 추천 0
 
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('Model_name', '', $config);


이 형식으로 하게되면 기존의 default  database.php 설정으로 접속이 되는데
디비 로드를 해당 영역에서 따로 해주는데도 오버라이드가 안되는 이유를 모르겠네요 ㅠ.ㅠ
한대승(불의회상) / 2014/02/13 15:33:19 / 추천 0
model에서 직접 DB를 로드 하여 사용하고자 하는 경우에는 autoload를 통하여 DB를 자동으로 로드하거나 컨트롤러에서 $this->load->databse()를 기술하면 안됩니다.
들국화 / 2014/02/13 16:48:09 / 추천 0
 음.. 데이타 베이스를 그렇케 사용 하시면... 사용자가 많아 지만 관리가 안될텐데요.....
쑤니요 / 2014/02/13 17:08:11 / 추천 0
 mysql_escape_sting(): this function is deprecated;
 
use mysql_real_escape_strning() instead.

다중디비 연결은 성공 하였습니다. 대신 로그인 부분을 구현했는데 다중디비로

위 같은 메세지가 나오네요 기존 디폴트 디비로 하면 안나오는 메세지 인데

왜 다른 디비는 이런 메세지가 나올까요 로그인 관련 컬럼과 자료는 두 디비 동일합니다.
쑤니요 / 2014/02/13 17:09:57 / 추천 0
들국화님 조언 부탁드립니다. 제가 프로그래밍 초보라 ;;
디비도 이제 짜보거든요....

약 50~ 최대 500곳의 업체를 관리하는 데이터베이스를 만들어야 하는데
어떤식으로 하는지도 감이 안오네요
살짝 조언이나 관련 서적 추천부탁드립니다
들국화 / 2014/02/13 17:23:58 / 추천 0
쑤니요// B2B형태인가 보네요.
회원 정보같이 회원사 테이블이 있을테고 고유코드가 없거나 번호를 반드시 정해진게 없으면 보통은 자동 증가값으로  번호를 따줍니다.
RDBMS 는 관계이기 때문에 생서한 번호를 다든 테이블의 컬럼으로 두어서 쿼리를 하면 됩니다.

그냥 포럼 소스를 참조하시거나 간단한 회원가입 기능이 있는 게시판을 한번 보고 하는게 빠를것 같네요.
소스를 간단하게나마 보고 하는게 나중에 작업시간을 줄일것 같네요.
쑤니요 / 2014/02/13 18:12:07 / 추천 0
 한대승님 들국화님 답변 감사드려요 ....
 자주자주 와서 질문 드릴께요 ㅠ.ㅠ 
 한없이 약한 초보라....
쑤니요 / 2014/02/14 09:25:21 / 추천 0
 알게된 내용 올려드립니다.
 특정 데이터 베이스를 동시접속이라면 기존 api 내용으로 선언후 동시 접속을 하면 되는거고
 저 같은 회원이나 회원사 아뒤를 생성하면서 그 변수로 데이터베이스명을 만든후 
 따로 데이터베이스를 접근해서 사용하면  mysql      select  databasename.tablename ~~~ 이런식으로 하면 
 해당 데이터베이스 접근해서 쿼리실행가능하네요.
 
한대승(불의회상) / 2014/02/14 13:19:30 / 추천 0
쑤니요// DB 생성 권한, DB 접근 권한이 user 하나에 집중 될텐데 보안에 주의 하셔야 겠네요.
혹시 DB user를 'root'로 설정해서 사용하고 계신건 아니겠죠??