CodeIgniter: Multiple Databases - Accessing database config in a second database CodeIgniter: Multiple Databases - Accessing database config in a second database codeigniter codeigniter

CodeIgniter: Multiple Databases - Accessing database config in a second database


From the docs ( https://www.codeigniter.com/user_guide/database/connecting.html ) :

The first parameter of this function can optionally be used to specify a particular database group from your config file, or you can even submit connection values for a database that is not specified in your config file.

So you would do something like this, replacing the values with values from the master database:

$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);

If you need to maintain a connection to the master database and the customer database, then change the last line to:

$customer_db = $this->load->database($config, TRUE);// to use the master database:$this->db->query("SELECT * FROM my_table");// to then use the customer database:$customer_db->query("SELECT * FROM whatever");


Make the master a default database and the customer for second database
$active_group = 'default'; $active_record = TRUE;

    $db['default']['hostname'] = '';    $db['default']['username'] = '';    $db['default']['password'] = '';    $db['default']['dbdriver'] = '';    $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['secondDatabase']['hostname'] = '';    $db['secondDatabase']['username'] = '';    $db['secondDatabase']['password'] = '';    $db['secondDatabase']['dbdriver'] = '';    $db['secondDatabase']['dbprefix'] = '';    $db['secondDatabase']['pconnect'] = TRUE;    $db['secondDatabase']['db_debug'] = TRUE;    $db['secondDatabase']['cache_on'] = FALSE;    $db['secondDatabase']['cachedir'] = '';    $db['secondDatabase']['char_set'] = 'utf8';    $db['secondDatabase']['dbcollat'] = 'utf8_general_ci';    $db['secondDatabase']['swap_pre'] = '';    $db['secondDatabase']['autoinit'] = TRUE;    $db['secondDatabase']['stricton'] = FALSE;

you can load the second database in controller or in model by

$DB2 = $this->load->database('secondDatabase', TRUE); 


/** config/database.php **/

$active_group = 'default';$active_record = TRUE;$db['default']['hostname'] = '';$db['default']['username'] = '';$db['default']['password'] = '';$db['default']['dbdriver'] = '';$db['default']['dbprefix'] = '';$db['default']['pconnect'] = TRUE;$db['default']['db_debug'] = (ENVIRONMENT !== 'production');$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; 

/** Your controller or model **/

//by default the master database will be loaded and you can directly access db using      $this->db    $result = $this->db->query("SELECT * FROM `your_table`")->limit(1)->get()->result();$config['dbxyz']['hostname'] = $result->hostname;$config['dbxyz']['username'] = $result->username;$config['dbxyz']['password'] = $result->password;$config['dbxyz']['dbdriver'] = '';$config['dbxyz']['dbprefix'] = '';$config['dbxyz']['pconnect'] = TRUE;$config['dbxyz']['db_debug'] = (ENVIRONMENT !== 'production');$config['dbxyz']['cache_on'] = FALSE;$config['dbxyz']['cachedir'] = '';$config['dbxyz']['char_set'] = 'utf8';$config['dbxyz']['dbcollat'] = 'utf8_general_ci';$config['dbxyz']['swap_pre'] = '';$config['dbxyz']['autoinit'] = TRUE;$config['dbxyz']['stricton'] = FALSE;//load database config$this->config->load('database');//Set database config dynamically        $this->config->set_item('dbxyz', $config);//Now you can load the new database using$this->dbxyz = $this->load->database('dbxyz'); 

NOTE: For more details, refer Config Class Codeigniter documentation