我目前正在构建一个应用程序,用户可以通过该应用程序输入自己的个人数据库连接来利用其 MySQL 数据库中的数据。
这意味着我将有两个数据库连接 - 我的本地连接(管理 session 等)和用户远程连接。
任何人都可以建议管理这两个连接的最佳方法吗?我查看了数据库组 - http://codeigniter.com/user_guide/database/connecting.html但是用户数据库连接将由 session 变量设置,因此我无法将远程数据库的详细信息放入配置文件中。
我尝试在我的类(class)中手动设置一个新的数据库组,例如:
$db['foreign']['hostname'] = $this->session->userdata('hostname');
$db['foreign']['username'] = $this->session->userdata('dbuser');
$db['foreign']['password'] = $this->session->userdata('dbpassword');
$db['foreign']['database'] = $this->session->userdata('dbname');
$db['foreign']['dbdriver'] = "mysql";
$db['foreign']['dbprefix'] = "";
$db['foreign']['pconnect'] = FALSE;
$db['foreign']['db_debug'] = TRUE;
$db['foreign']['cache_on'] = FALSE;
$db['foreign']['cachedir'] = "";
$db['foreign']['char_set'] = "utf8";
$db['foreign']['dbcollat'] = "utf8_general_ci";
$foreign_db = $this->load->database('foreign', TRUE);
但是我在负载线上遇到异常:
You have specified an invalid database connection group.
谁能告诉我如何实现这一目标?
非常感谢,本。
最佳答案
为了使用组调用语法,必须在配置文件中定义组。 CI 包括将配置直接传递到数据库加载器的能力。 (注意:这可能只是 CI 2+ 功能)
你想要这样的东西:
$db['hostname'] = $this->session->userdata('hostname');
$db['username'] = $this->session->userdata('dbuser');
$db['password'] = $this->session->userdata('dbpassword');
$db['database'] = $this->session->userdata('dbname');
$db['dbdriver'] = "mysql";
$db['dbprefix'] = "";
$db['pconnect'] = FALSE;
$db['db_debug'] = TRUE;
$db['cache_on'] = FALSE;
$db['cachedir'] = "";
$db['char_set'] = "utf8";
$db['dbcollat'] = "utf8_general_ci";
$foreign_db = $this->load->database($db, TRUE);
关于php - Codeigniter - 多个数据库连接 - 本地和远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558027/