我有一个需求,我需要将数据插入到不同数据库的两个表中..
$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
错误
Table 'mydb.otherdb.table1' doesn't exist
它不会忽略我的默认数据库 mydb...
有什么建议吗?
最佳答案
您必须定义第二组数据库参数。 CI 并不是为了真正拥有两个数据库连接而开发的,它更多的是用于交换测试和生产数据库。那就是说周围有一些技巧。所以首先像这样定义第二组数据库信息:
/* 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";
您的事件数据库将是您最后定义的数据库。
完成此操作后,您可以手动连接到第二个(如果您始终需要,也可以将其放在 MY_Controller 中)。然后你可以像这样加载你的第二个数据库:
$this->other_db= $this->CI->load->database('forum', TRUE);
使用 $this->db
访问数据库 1,使用 $this->other_db
(或任何您调用的名称)访问数据库 2。
谢谢
关于mysql - 如何在 codeigniter 中将数据插入其他数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18041239/