2012-06-27 12 views
5

私はCodeIgniterといくつかのMySQLデータベースを持っています。しかし、私は作業のために別のデータベースを設定したいと思っています。例えば、私は()関数のmake_some_actions_with_dbを持って、そして今私はそのような何か持っている必要があります。今、私は新しいデフォルトのDBを設定することができますし、どのように私は最初の(別の設定方法を知る必要があり、そうCodeIgniterを使用して別のデータベースを読み込む方法は?

public function action() 
{ 
//load db 
make_some_actions_with_db(); 
//disable db 
} 

を)db。ありがとうございました。

更新日: それは動作しません:

public function update_record_insert_test() 
    { 
     if ($this->facebook->getUser()) 
     { 
      $another_db_settings['hostname'] = 'localhost'; 
      $another_db_settings['username'] = 'root'; 
      $another_db_settings['password'] = ''; 
      $another_db_settings['database'] = 'name'; 
      $another_db_settings['dbdriver'] = "mysql"; 
      $another_db_settings['dbprefix'] = ""; 
      $another_db_settings['pconnect'] = TRUE; 
      $another_db_settings['db_debug'] = TRUE; 
      $another_db_settings['cache_on'] = FALSE; 
      $another_db_settings['cachedir'] = ""; 
      $another_db_settings['char_set'] = "utf8"; 
      $another_db_settings['dbcollat'] = "utf8_general_ci"; 
      $this->load->database($another_db_settings); 

      $_POST['id']='AccountPagesView.a_book/1000'; 
      $_POST['value']='test'; 
      $_POST['old_value']='not'; 
      $welcome=new Welcome(); 
      $welcome->update_record(); 
     } 
     else 
     { 
      $url=$this->facebook->getLoginUrl(array('next' => base_url().'update_record_insert_test')); 
      redirect($url); 
     } 
    } 

答えて

9

をであなたのconfig/database.phpデータベースはそうのように、 'デフォルト' グループに設定されています

$db['default']['hostname'] = 'host'; 
$db['default']['username'] = 'username'; 
$db['default']['password'] = 'password'; 
$db['default']['database'] = 'database'; 

これはあなたがすることができます次のような他のグループを指定してください:

$db['second']['hostname'] = 'host'; 
$db['second']['username'] = 'username'; 
$db['second']['password'] = 'password'; 
$db['second']['database'] = 'database'; 

$db['third']['hostname'] = 'host'; 
$db['third']['username'] = 'username'; 
$db['third']['password'] = 'password'; 
$db['third']['database'] = 'database'; 

あなたはその後、使用して別のデータベースに接続することができます

:第二の値として trueを渡すことによって

$defaultDB = $this->load->database('default', TRUE); 
$secondDB = $this->load->database('second', TRUE); 

を、それはそうと同じように、あなたが安全に、データベースごとに同じ方法を使用することができるように、データベースオブジェクトを返します。

$default->get('table'); 
$second->get('different_table'); 
+0

を介して他の変数への新しい接続を割り当てます> DB->取得(.. 。)、私はこのコードを変更することはできませんが、同じテーブルを持つ同じdbがある、私はこれをデフォルトのdbを変更する必要があります。私はそれをどのようにすることができますか?たとえば、今は "db1"データベースがあり、2番目は "db1_copy"です - これと同じような$ this-> db->という要求はすべて "db1_copy"で実行される必要があります。 – user1477886

+0

設定を変更できる場合は、 'default'グループの詳細を 'db1_copy'の詳細に変更してください。それは動作するはずですか? – cchana

+0

いいえ、私はちょうど試したが、それは動作しません。 – user1477886

0

あなたが行うことができます(私はお勧めしません)、デフォルトのデータベース接続を変更する場合:

$another_db_settings['hostname'] = ''; 
$another_db_settings['username'] = ''; 
$another_db_settings['password'] = ''; 
$another_db_settings['database'] = ''; 
$another_db_settings['dbdriver'] = "mysql"; 
$another_db_settings['dbprefix'] = ""; 
$another_db_settings['pconnect'] = TRUE; 
$another_db_settings['db_debug'] = TRUE; 
$another_db_settings['cache_on'] = FALSE; 
$another_db_settings['cachedir'] = ""; 
$another_db_settings['char_set'] = "utf8"; 
$another_db_settings['dbcollat'] = "utf8_general_ci"; 
$this->load->database($another_db_settings); 

次に、新しいデータベース今、私はの$ this - を使用して、すべてのリクエストを行います$ this-> DBを介してアクセスすることができますが、私は提案し何cchana行うことをお勧めして

$new_db = $this->load->database($another_db_settings, TRUE); 
+0

あなたのお勧めは機能しません。更新された質問を確認してください。 – user1477886

+0

Welcomeクラスを表示できますか?この場合、なぜ別のデータベース接続が必要なのかわかりません。 – marshall

+0

Welcomeクラスのupdate_record()関数は、メインデータベースでいくつかのアクションを実行します。私はそれをテストする必要があり、私はそれのためにメインDBのコピーを使用したい。 – user1477886

関連する問題