2
我已經開發了一個php codeigniter網站,其中使用了單個物理實例的代碼。在php和codeigniter中使用單個應用程序的多個數據庫
這裏我想要的邏輯是在登錄頁面上,用戶將選擇將在數據庫名稱內部的companyid。 我想知道如何根據用戶在登錄時選擇的公司id更新active_group變量。
有沒有辦法這樣做。
我已經開發了一個php codeigniter網站,其中使用了單個物理實例的代碼。在php和codeigniter中使用單個應用程序的多個數據庫
這裏我想要的邏輯是在登錄頁面上,用戶將選擇將在數據庫名稱內部的companyid。 我想知道如何根據用戶在登錄時選擇的公司id更新active_group變量。
有沒有辦法這樣做。
您需要擁有一個用於用戶認證的主數據庫並存儲信息嗎?所以你需要管理兩個連接。你可以在那裏有你的默認連接,然後在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互動以及這 - $>分貝。前者將用於數據庫與數據庫的交互,後者用於與主要默認連接的交互。
Helloooo?這是一個史詩般的答案,已經接受它。 :-P – 2010-05-11 09:17:39