2010-05-04 66 views
2

我已經開發了一個php codeigniter網站,其中使用了單個物理實例的代碼。在php和codeigniter中使用單個應用程序的多個數據庫

這裏我想要的邏輯是在登錄頁面上,用戶將選擇將在數據庫名稱內部的companyid。 我想知道如何根據用戶在登錄時選擇的公司id更新active_group變量。

有沒有辦法這樣做。

+0

Helloooo?這是一個史詩般的答案,已經接受它。 :-P – 2010-05-11 09:17:39

回答

2

您需要擁有一個用於用戶認證的主數據庫並存儲信息嗎?所以你需要管理兩個連接。你可以在那裏有你的默認連接,然後在MY_Controller中設置你的第二個配置。

這個MY_Controller會處理用戶檢測(從自動加載的數據庫類以及您使用的任何model/lib/auth系統),那麼它當然會從用戶那裏獲取數據庫名稱,但它可能會被連接。

然後,您可以使用這樣的代碼來設置第二DB:

class MY_Controller extends Controller 
{ 
    function MY_Controller() { 

     parent::Controller(); 

     $this->user = $this->auth->get_user($this->input->post('username'), $this->input->post('password')); 
     $this->company = $this->company->get($this->input->post('company_id')); 

     $config['hostname'] = "localhost"; 
     $config['username'] = "myusername"; 
     $config['password'] = "mypassword"; 
     $config['database'] = $this->company->database; 
     $config['dbdriver'] = "mysql"; 
     $config['dbprefix'] = ""; 
     $config['pconnect'] = FALSE; 
     $config['db_debug'] = TRUE; 
     $config['cache_on'] = FALSE; 
     $config['cachedir'] = ""; 
     $config['char_set'] = "utf8"; 
     $config['dbcollat'] = "utf8_general_ci"; 

     $this->company_db = $this->load->database($config, TRUE); 
    } 

} 

你可以接着用$這個 - > company_db互動以及這 - $>分貝。前者將用於數據庫與數據庫的交互,後者用於與主要默認連接的交互。

相關問題