我有多个基于CI的网站,他们都使用自己的默认数据库,工作得很好。
现在我有一个要求,其中一个网站连接到另一个网站的数据库以获取一些信息(它们在同一台服务器上),但维护本机数据库连接。
我正在使用以下代码连接到其他网站数据库
$dsn = 'mysql://econnect_base_user:econnect_base_pass@localhost/econnect_base_db';
$city_db = $this->load->database($dsn, TRUE);
问题是这会重置默认数据库并关闭'city_db'并尝试重新连接默认数据库将无法工作(可能是最糟糕的事情,但我没有任何其他想法!)
请帮忙。
感谢。
答案 0 :(得分:2)
如果您需要同时连接到多个数据库 可以这样做:
$DB1 = $this->load->database('group_one', TRUE); $DB2 = $this->load->database('group_two', TRUE);
注意:将单词“group_one”和“group_two”更改为具体 您要连接的组名(或者您可以传递连接 值如上所示。)
通过将第二个参数设置为TRUE(布尔值),函数将会 返回数据库对象。
以这种方式连接时,您将使用您的对象名称进行发布 命令而不是本指南中使用的语法。其他 单词,而不是发出命令:
$this->db->query(); $this->db->result(); //etc...
您将使用:
$DB1->query(); $DB1->result();
答案 1 :(得分:0)
只需使用普通的php db:
$other_dbh = new PDO("mysql:host=localhost;dbname=$other_db_name", $other_db_user, $other_db_pass);
foreach ($other_dbh->query('SELECT * from FOO') as $row)
process_info($row);
答案 2 :(得分:0)
首先在config / database.php中设置两个数据库连接。默认情况下,您将看到以下内容。
$current_year = the_date( 'Y' );
$args = array(
'post_type' => 'issue_number',
'posts_per_page' => 13,
'paged' => $paged,
'year' => $current_year
);
将另一个数据库连接设置添加为$ db ['another_db'],如下所示
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = '';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
然后对于默认数据库,您只需在加载数据库后执行常规查询。
$db['another_db']['hostname'] = '';
$db['another_db']['username'] = '';
$db['another_db']['password'] = '';
$db['another_db']['database'] = '';
$db['another_db']['dbdriver'] = 'mysql';
$db['another_db']['dbprefix'] = '';
$db['another_db']['pconnect'] = TRUE;
$db['another_db']['db_debug'] = TRUE;
$db['another_db']['cache_on'] = FALSE;
$db['another_db']['cachedir'] = '';
$db['another_db']['char_set'] = 'utf8';
$db['another_db']['dbcollat'] = 'utf8_general_ci';
$db['another_db']['swap_pre'] = '';
$db['another_db']['autoinit'] = TRUE;
$db['another_db']['stricton'] = FALSE;
用于加载another_db并进行查询,
$this->load->database();
$this->db->query($sql);
$this->db->result();
答案 3 :(得分:0)
在config / database.php中包含此代码 希望这对你有用。
$active_group = 'default';
$active_record = TRUE;
// first db configuration
$db['default']['hostname'] = 'localhost'; // Hostname
$db['default']['username'] = 'root'; // username
$db['default']['password'] = ''; // password
$db['default']['database'] = 'first_db'; // replace your database name
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
// second db configuration
$db['db2']['hostname'] = 'localhost'; // Hostname
$db['db2']['username'] = 'root'; // username
$db['db2']['password'] = ''; // password
$db['db2']['database'] = 'second_db'; // replace your database name
$db['db2']['dbdriver'] = 'mysqli';
$db['db2']['dbprefix'] = '';
$db['db2']['pconnect'] = FALSE;
$db['db2']['db_debug'] = TRUE;
$db['db2']['cache_on'] = FALSE;
$db['db2']['cachedir'] = '';
$db['db2']['char_set'] = 'utf8';
$db['db2']['dbcollat'] = 'utf8_general_ci';
$db['db2']['swap_pre'] = '';
$db['db2']['autoinit'] = TRUE;
$db['db2']['stricton'] = FALSE;
您可以通过加载数据库
在任何地方使用这两个数据库$this->load->database();
$this->db->database;
$this->db->database2;
$this->db->query('your query');