我在codeigniter中开发了一个应用程序。我的申请中有一个类似论坛的部分。为此,我想为该控制器创建一个单独的数据库。
这样我就可以很容易地维护站点和数据库。我的问题可以在 codeigniter 中将数据库分配给单个控制器吗?
谢谢
我在codeigniter中开发了一个应用程序。我的申请中有一个类似论坛的部分。为此,我想为该控制器创建一个单独的数据库。
这样我就可以很容易地维护站点和数据库。我的问题可以在 codeigniter 中将数据库分配给单个控制器吗?
谢谢
您可以将数据库连接传递给构造函数:
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$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->load->database($config);
正如 manix 的回答中提到的,您可以将设置传递给数据库库构造函数。
然而遗漏的是您必须指定true
为第二个参数并在变量中捕获输出。
$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
不这样做意味着您一次只能使用一个数据库,因为它会替换数据库连接而不是打开一个新数据库!
请注意,我们正在传递字符串group_one
,group_two
这些是数据库设置组(在您的配置文件中,您通常只有该default
组)。
您可以用一组配置选项替换组名,但最好使用组!
然后,您可以将查询运行为
//query against first database
$DB1->select(...
//query against second database
$DB2->select(...
您可以使用$DB2->close();
或关闭其中一个连接$DB1->close();
更多信息可以在用户指南中找到
copy and paste at database.php
//Another database connection.
$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'root';
$db['database2']['password'] = '';
$db['database2']['database'] = 'dbname2';
$db['database2']['dbdriver'] = 'mysql';
$db['database2']['dbprefix'] = '';
$db['database2']['pconnect'] = FALSE;
$db['database2']['db_debug'] = TRUE;
$db['database2']['cache_on'] = FALSE;
$db['database2']['cachedir'] = '';
$db['database2']['char_set'] = 'utf8';
$db['database2']['dbcollat'] = 'utf8_general_ci';
$db['database2']['swap_pre'] = '';
$db['database2']['autoinit'] = TRUE;
$db['database2']['stricton'] = FALSE;
//how to use the second database which is configured
$CI= &get_instance();
//set the second parameter to TRUE.
$this->db2 = $CI->load->database('database2', TRUE);
$qry= $this->db2->query("SELECT * FROM db2tables");
var_dump($qry->result());
有关更多详细信息,请参阅以下链接 http://quandaflow.com/two-databases-connections-codeigniter/