如何在codeigniter中将数据插入到其他数据库中

Ray*_*iez 1 mysql database codeigniter

我有一个要求我需要将数据插入到不同数据库的两个表中.

$insert_query = 'INSERT INTO table1 (col1, col2) values(1, 2)';
$insert_otherdb_query= 'INSERT INTO otherdb.table1 (col1, col2) values(1, 2)';
$this->db->query($insert_query); //works fine
$this->db->query($insert_otherdb_query); //doesn't work
Run Code Online (Sandbox Code Playgroud)

错误

表'mydb.otherdb.table1'不存在

它不会忽略mydb这是我的默认数据库...
任何suggesstions?

Man*_*nju 5

您必须定义第二组数据库参数.CI不是为了真正拥有两个数据库连接而开发的,它更适用于交换测试和生产数据库.那说它周围有一些技巧.所以首先定义第二组DB信息,如下所示:

/* FORUM */
$active_group = "forum";
$active_record = TRUE;

$db['forum']['hostname'] = "xxxxx";
$db['forum']['username'] = "xxxxx";
$db['forum']['password'] = "xxxxx";
$db['forum']['database'] = "xxxxx";
$db['forum']['dbdriver'] = "mysql";
$db['forum']['dbprefix'] = "";
$db['forum']['pconnect'] = TRUE;
$db['forum']['db_debug'] = TRUE;
$db['forum']['cache_on'] = FALSE;
$db['forum']['cachedir'] = "";
$db['forum']['char_set'] = "utf8";
$db['forum']['dbcollat'] = "utf8_general_ci";

/* TEST SITE */
$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "xxxxx";
$db['default']['username'] = "xxxxx";
$db['default']['password'] = "xxxxx";
$db['default']['database'] = "xxxxx";
$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"; 
Run Code Online (Sandbox Code Playgroud)

您的活动数据库将是您最后定义的数据库.

完成此操作后,您可以手动连接到第二个(或者如果您需要,可以将其放在MY_Controller中).然后,您可以加载第二个数据库,如下所示:

$this->other_db= $this->CI->load->database('forum', TRUE); 
Run Code Online (Sandbox Code Playgroud)

使用$this->db和dbase 2 访问dbase 1 $this->other_db(或者您调用它).

谢谢