2012-04-18 5 views
1

안녕하세요 모두 CI에서 여러 데이터베이스에 연결할 때 오류가 발생했습니다. 여러 DB에 연결할 때 누군가가 올바른 방법을 알 수 있습니까? 다중 코드 데이터베이스 연결 오류 codeigniter

내 database.php 파일

$active_group = 'default'; 
$active_record = TRUE; 
$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = 'root'; 
$db['default']['password'] = 'root'; 
$db['default']['database'] = 'cizacl'; 
$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; 

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

이며, 다음이이 내 출력보기 코드

<p> 
<?php foreach($records as $row) : ?> 
<h1><?php echo $row->user_username;?></h1> 
<?php endforeach; ?> 
</p> 

<p> 
<?php foreach($records as $row) : ?> 
<h1><?php echo $row->username;?></h1> 
<?php endforeach; ?> 
</p> 

입니다

function getAll(){ 
$DB1 = $this->load->database('default',TRUE); 
$DB2 = $this->load->database('alternate',TRUE); 

//retrieve default DB 
$query = $DB1->get('users'); 

if($query->num_rows() > 0){ 
foreach($query->result() as $row){ 
$data[] = $row;  
} 
return $data; 
} 

//retrieve alternate db 
$query = $DB2->get('admins'); 
if($query->num_rows() > 0){ 
foreach($query->result() as $row){ 
$data[] = $row;  
} 
return $data; 
} 
} 

내 모델에서 모든 레코드 기능을 검색입니다 이 프로그램을 실행할 때 오류가 발생했습니다 'vkwow_auth.users'테이블이 존재하지 않습니다.

여러 DB를 연결하는 데 의견/올바른 방법을 부탁드립니다.

+0

¿ 설정에서 $ active_group 절을 사용하지 않으셨습니까? – Patroklo

+0

올바르게 수행하는 방법은 이미 답변되었습니다. http://stackoverflow.com/questions/15348423/codeigniter-multiple-databases-accessing-database-config-in-a-second-database – steve

답변

1

이것이 실제로 문제인지는 모르겠지만 왜 모델에서 DB1의 $ 데이터를 반환합니까? 실제로 DB2 요청에 도달하지 않기 때문입니다.

배열을 만든 다음 결과를 결합해야합니다.

function getAll() 
{ 
$DB1 = $this->load->database('default',TRUE); 
$DB2 = $this->load->database('alternate',TRUE); 

$data = new_array(); 
//retrieve default DB 
$query = $DB1->get('users'); 

if($query->num_rows() > 0) 
{ 
    foreach($query->result() as $row) 
    { 
     $data['db1'][] = $row;  
    } 
} 

//retrieve alternate db 
$query = $DB2->get('admins'); 
if($query->num_rows() > 0) 
{ 
    foreach($query->result() as $row) 
    { 
     $data['db2'][] = $row;  
    } 

} 

return $data; 
} 

후 바로 각 배열을

편집을 표시하도록 뷰 출력을 변경 : "나는 존재하지 않는 오류 테이블 'vkwow_auth.users'을 가지고이 프로그램을 실행할 때"-이 나던 실제로 같은 소리 DB 연결 오류 - 쿼리 오류와 비슷해 보입니까?

+0

이 작업을 수행 했습니까? – Laurence

관련 문제