![](/img/trans.png)
[英]How Switch User And Backup A DataBase In MySql With Current User(Logged In User)?
[英]make dynamic switch to different database based on logged in user's credentials?
为database.php
<?php
class Database extends CI_Controller {
public $branch_db;
function __construct($company_name, $branch_name) {
parent::__construct();
$branch_db = $this->load->database($company_name.'_db_'.$branch_name);
}
}
?>
Account_model.php
protected function verifyLogin($username, $password) {
$this->db->trans_start();
$sql = "SELECT password, company_id, branch_id
FROM account
WHERE username = {$username}"; //Prepare statement
$query = $this->db->query($sql);
$result_num = $query->num_rows();
if ($result_num == 1) {
$first_row = $query->row();
$stored_password = $first_row->password;
if (password_verify($password, $stored_password)) {
//Successful login
//Get company name
//Get branch name
//Set database
//Pass company_name, branch_name
//All models must be able to access the dynamically loaded database
}
}
$this->db->trans_complete();
}
有多个数据库可以访问。 对于每个分支,都有一个动态创建的数据库。 每个分支都有一个帐户。 登录帐户后,将访问与该帐户相关的数据库。 然后,该数据库将用于整个会话,直到用户注销为止。
我有一个主数据库,其中存储了有效的用户名/密码组合的主列表。 我在config
文件夹中的database.php
中声明了它。 但是在用户登录后,我将需要切换到与该用户帐户相关的数据库,以便他们可以访问其数据。
如何为模型使用此控制器,以便它们都访问同一数据库(而不必一遍又一遍地重做$this->load->database()
)?
我期望在您的database.php Application->config->database.php
,您创建一个会话并在登录时存储admin_type变量。
$admin_type = $this->session->userdata['admin_type'];
$active_group = 'default';
$query_builder = TRUE;
if ($admin_type==1) {
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'name_db',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
}else{
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'name_db2',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.