CI 묻고 답하기

제목 데이터베이스 클래스에 데이터베이스를 선택하는 기능이 있나요?
글쓴이 cowboyjs 작성시각 2012/11/21 18:48:30
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 17285   RSS
 DB01, DB02 라는 2개의 데이터베이스를 만들고
test라는 아이디를 생성해서
위 2개의 데이터베이스 모두에 접근할 있게 권한을 줬습니다.
 
php의 mysqli를 이용해서
$DBConn=new mysqli('localhost', 'test', '1234', 'DB01', 3306);
이렇게 연결을 하면
$DBConn->select_db('DB02');
이런식으로 사용할 데이터베이스를 선택할 수 있는데요,
 
CodeIgniter의 데이터베이스 클래스에도 같은 기능이 있나요?
 
매뉴얼에는 다중으로 여러개 연결하는 방법은 있던데
하나의 연결에서 사용할 데이터베이스를 선택하는건 못 찾겠네요.
 다음글 model - control -view query 문 ... (6)
 이전글 anchor에 클래스 먹일 수 있을까요? (2)

댓글

헛발이 / 2012/11/21 18:52:28 / 추천 0
$active_group = 'DB2';
$active_record = TRUE;

$db['default']['hostname'] = '';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$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;

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


$db['DB2']['hostname'] = '';
$db['DB2']['username'] = '';
$db['DB2']['password'] = '';
$db['DB2']['database'] = '';
$db['DB2']['dbdriver'] = 'mysql';
$db['DB2']['dbprefix'] = '';
$db['DB2']['pconnect'] = TRUE;
$db['DB2']['db_debug'] = TRUE;
$db['DB2']['cache_on'] = FALSE;
$db['DB2']['cachedir'] = '';
$db['DB2']['char_set'] = 'utf8';
$db['DB2']['dbcollat'] = 'utf8_general_ci';
$db['DB2']['swap_pre'] = '';
$db['DB2']['autoinit'] = TRUE;
$db['DB2']['stricton'] = FALSE;
application / config / detabase.php 에서
$active_group = 'DB2'; 를 바꿔주면 전체 시스템에서 이걸로 했따 저걸로 했따 한데...
이런걸 말씀 하시는건가요?
한대승(불의회상) / 2012/11/21 18:55:46 / 추천 0
DB전체를 바꿔가며 작업한다면 헛발이님 방식대로 하시면 되구요.
어떤 한 모델에서 DB를 바꿔 가면서 작업한다면 아래를 참고 하세요.

http://www.cikorea.net/tip/view/914/page/1/
cowboyjs / 2012/11/21 19:10:01 / 추천 0
 답변들 감사합니다. ^^
 
음... 제가 원하는게
 
database.php 파일에는
 
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'test';
$db['default']['password'] = '1234';
$db['default']['database'] = 'DB01';
$db['default']['dbdriver'] = 'mysql';
$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_unicode_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
 
위 같이 DB연결 정보가 하나만 있구요.
(test라는 아이디로 DB01, DB02 2개 데이터베이스 모두 접근가능)
 
 
class Main extends CI_Controller{
function index(){
$q=$this->db->get('member');
$result=$q->result();
//DB01의 member 테이블 데이터 가져오기
 
$this->db->select_db('DB02');
//DB02 데이터베이스를 선택
 
$q=$this->db->get('member');
$result=$q->result();
//DB02의 member 테이블 데이터 가져오기
}
}
 
대충 이런식으로 사용 가능할까요?
한대승(불의회상) / 2012/11/21 19:11:59 / 추천 0
DB2에도 접근 권한이 있다면 굳이 그럴 필요 없이..
$this->db->get('DB02.member');

cowboyjs / 2012/11/21 19:16:06 / 추천 0
앞에 DB명을 붙이는 방식으로 해야하는군요. ㅋ;
답변 감사합니다. ^^