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?
您必须定义第二组数据库参数.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(或者您调用它).
谢谢