我有一个功能如下: 当任何用户登录时我想根据登录凭证 连接到特定的数据库。通过基于登录的codeigniter访问数据库
我试着用
$this->db->close();
and this->db->reconnect();
,但它并没有帮助
我有一个功能如下: 当任何用户登录时我想根据登录凭证 连接到特定的数据库。通过基于登录的codeigniter访问数据库
我试着用
$this->db->close();
and this->db->reconnect();
,但它并没有帮助
我想通了,我的答案..编码如下:
在我添加了一个新的数据库配置的database.php中文件:
$db['db2']=$db['default'];
$db['db2']['database'] = 'new_db2';
,然后在所有的模型构造函数我把把下面的代码:
$new_db = $this->load->database('db2', TRUE);
$this->db = $new_db;
所以在这种情况下,我不需要改变我所有的querie秒。欢呼!!! :)
如果你在所有的模型中都有这个,而不是你为什么甚至需要原始的配置呢? – Alex
在你application/config/database.php
您可以定义多个数据库连接做
$db['database1']['hostname'] = 'localhost';
$db['database1']['username'] = 'db1_root';
$db['database1']['password'] = 'xxxxxx';
$db['database1']['database'] = 'database1_name';
$db['database1']['db_debug'] = false; //Important
$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'db2_root';
$db['database2']['password'] = 'xxxxxx';
$db['database2']['database'] = 'database2_name';
$db['database2']['db_debug'] = false; //Important
然后你就可以加载特定的数据库做
$database1 = $this->load->database('database1', true);
$database2 = $this->load->database('database2', true);
然后,而不是做/不管通过传递一个配置数组$this->load->database()
$this->db->query();
你需要做的要么
$database1->query();
$database2->query();
感谢您的答复,但我想要更简单的方法来做到这一点实际上..因为我已经编码完整的应用程序..和一个新的功能是以访问不同的数据库..所以我必须在这种情况下更改完整的代码:( – Simone
您可以使用您的控制器/模型/库动态配置连接。
$config['hostname'] = "localhost";
$config['username'] = $user_name;
$config['password'] = $user_password;
$config['database'] = $user_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";
$user_db = $this->load->database($config, true);
你打算为不同的用户连接不同的数据库吗? –
在没有用户..在登录页面我已经给了一年选择..并根据选择的年份数据库名称连接应设置 – Simone
http://stackoverflow.com/questions/11622872/how-用户指定的数据库在codeigniter连接 - 检查这 –