MySQL Codeigniter multi connections

Question:

In my database.php I created two connections:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'sitejc';
$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';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
$db['default']['date_default_timezone_set'] = 'America/Sao_Paulo';

$db['parceiro']['hostname'] = 'localhost'; 
$db['parceiro']['username'] = 'root';
$db['parceiro']['password'] = '';
$db['parceiro']['database'] = 'sistema2';
$db['parceiro']['dbdriver'] = 'mysql';
$db['parceiro']['dbprefix'] = '';
$db['parceiro']['pconnect'] = TRUE;
$db['parceiro']['db_debug'] = TRUE;
$db['parceiro']['cache_on'] = FALSE;
$db['parceiro']['cachedir'] = '';
$db['parceiro']['char_set'] = 'utf8';
$db['parceiro']['dbcollat'] = 'utf8_general_ci';
$db['parceiro']['swap_pre'] = '';
$db['parceiro']['autoinit'] = TRUE;
$db['parceiro']['stricton'] = FALSE;
$db['parceiro']['date_default_timezone_set'] = 'America/Sao_Paulo';

/* End of file database.php */
/* Location: ./application/config/database.php */

Inside my controller, I loaded it like this:

$parceiro_db = $this->load->database('parceiro', TRUE);

However, when making a request from the selected database, I get an error.

Request form:

class Cadastro extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('model_cadastro');
        $parceiro = $this->load->database('parceiro', TRUE);
    }

    # Cadastro para Empresa
    public function empresa($metodo=NULL) {
        if($this->input->post('submit')){
            $clientes = $parceiro->get('cliente')->result();
        }

Mistake:

Fatal error: Call to a member function get() on a non-object in /home/jcentreg/public_html/sitejc/site/modules/cadastro/controllers/cadastro.php on line 21

How do I make this multi connection?

Answer:

Wouldn't it be $parceiro_db ?

$clientes = $parceiro_db->get('clientes')->result();

Doc – Connecting to Multiple Databases

To work there is a problem in the configuration in $db['parceiro']['dbdriver'] is set as mysql put in place mysqli :

$db['parceiro']['hostname'] = 'localhost'; 
$db['parceiro']['username'] = 'root';
$db['parceiro']['password'] = '';
$db['parceiro']['database'] = 'sistema2';
$db['parceiro']['dbdriver'] = 'mysqli';
$db['parceiro']['dbprefix'] = '';
$db['parceiro']['pconnect'] = TRUE;
$db['parceiro']['db_debug'] = TRUE;
$db['parceiro']['cache_on'] = FALSE;
$db['parceiro']['cachedir'] = '';
$db['parceiro']['char_set'] = 'utf8';
$db['parceiro']['dbcollat'] = 'utf8_general_ci';
$db['parceiro']['swap_pre'] = '';
$db['parceiro']['autoinit'] = TRUE;
$db['parceiro']['stricton'] = FALSE;
$db['parceiro']['date_default_timezone_set'] = 'America/Sao_Paulo';

$db = $this->load->database("parceiro", TRUE);
var_dump(  $db->get("cliente")->result_array() );

Encoding error:

class Cadastro extends MY_Controller 
{
    private $parceiro;
    public function __construct() 
    {
        parent::__construct();
        $this->load->model('model_cadastro');
        $this->parceiro = $this->load->database('parceiro', TRUE);
    }

    # Cadastro para Empresa
    public function empresa($metodo=NULL) 
    {
        if($this->input->post('submit'))
        {
            $clientes = $this->parceiro->get('cliente')->result();
        }

As a variable was used to work in the methods, you have to use $this to assign and use.

Examples: SOEnCodeIgniter: Multiple Databases – Accessing database config in a second database

Scroll to Top