我在php codeigniter中开发了一个网站,其想法是使用代码的单个物理实例。
这里我想要的逻辑是登录页面用户将选择将在数据库名称内部的companyid。 我想知道如何根据用户在登录时选择的公司ID更新active_group变量。
有没有办法这样做。
答案 0 :(得分:2)
您需要拥有一个主数据库来进行用户身份验证并保存信息吗?所以你需要管理两个连接。您可以在那里使用默认连接,然后在MY_Controller中设置第二个配置。
这个MY_Controller会处理用户检测(来自自动加载的数据库类和你正在使用的任何模型/ 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);
}
}
然后,您可以与$ this-> company_db以及$ this-> db进行互动。前者用于与其数据库的数据库交互,后者用于与主要默认连接进行交互。