1

application/config/ database.php, How can I set another database with same localhost, Please help! thanks in Advance

$active_group = 'default';
$active_record = TRUE;
$db['default'] = array(
 'dsn' => '',
 'hostname' => 'localhost',
 'username' => 'root',
 'password' => '',
 'database' => 'business_permit',
 'dbdriver' => 'mysqli',
 'dbprefix' => '',
 'pconnect' => FALSE,
 'db_debug' => (ENVIRONMENT !== 'production'),
 'cache_on' => FALSE,
 'cachedir' => '',
 'char_set' => 'utf8',
 'dbcollat' => 'utf8_general_ci',
 'swap_pre' => '',
 'encrypt' => FALSE,
 'compress' => FALSE,
 'stricton' => FALSE,
 'failover' => array(),
 'save_queries' => TRUE
);
J.A.Manato
  • 27
  • 1
  • 6

2 Answers2

5

The best way is to use different database groups. If you want to keep using the master database as usual ($this->db) just turn off persistent connection configuration option to your secondary database(s). Only master database should work with persistent connection :

Master database

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$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;

Secondary database (notice pconnect is set to false)

$db['otherdb']['hostname'] = "localhost";
$db['otherdb']['username'] = "root";
$db['otherdb']['password'] = "";
$db['otherdb']['database'] = "other_database_name";
$db['otherdb']['dbdriver'] = "mysql";
$db['otherdb']['dbprefix'] = "";
$db['otherdb']['pconnect'] = FALSE;
$db['otherdb']['db_debug'] = FALSE;
$db['otherdb']['cache_on'] = FALSE;
$db['otherdb']['cachedir'] = "";
$db['otherdb']['char_set'] = "utf8";
$db['otherdb']['dbcollat'] = "utf8_general_ci";
$db['otherdb']['swap_pre'] = "";
$db['otherdb']['autoinit'] = TRUE;
$db['otherdb']['stricton'] = FALSE;

Then you can use secondary databases as database objects while using master database as usual :

// use master dataabse
$users = $this->db->get('users');

// connect to secondary database
$otherdb = $this->load->database('otherdb', TRUE);
$stuff = $otherdb->get('struff');
$otherdb->insert_batch('users', $users->result_array());

// keep using master database as usual, for example insert stuff from other database
$this->db->insert_batch('stuff', $stuff->result_array());

Hopes answered your question. Google first before you ask the question... ;)

Codeigniter - multiple database connections

Nere
  • 4,097
  • 5
  • 31
  • 71
  • Where to put this – J.A.Manato Jul 26 '17 at 03:04
  • // use master dataabse $users = $this->db->get('users'); // connect to secondary database $otherdb = $this->load->database('otherdb', TRUE); $stuff = $otherdb->get('struff'); $otherdb->insert_batch('users', $users->result_array()); // keep using master database as usual, for example insert stuff from other database $this->db->insert_batch('stuff', $stuff->result_array()); – J.A.Manato Jul 26 '17 at 03:04
  • Just go to `application > config > database.php` Make sure your database has been set in `autoload.php` – Nere Jul 26 '17 at 03:12
  • @J.A.Manato You may refer this link for further details https://www.codeigniter.com/userguide2/database/index.html – Nere Jul 26 '17 at 03:17
0

you have use environment to use multiple database

  • create config folder inside production and development folder and add database.php file
  • then root path index.php file set environment