2012-04-18 8 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

¿あなたはconfigで$ 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』を持ってこのプログラムを実行すると、」 - このdoesntのは、実際のように聞こえますDB接続エラー - クエリエラーのように思える?

+0

これはあなたのために機能しましたか? – Laurence