Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
469 views
in Technique[技术] by (71.8m points)

php - Codeigniter - multiple database connections

I have a problem with multiple db connections at Codeigniter. At my database.php i configured two databases.

$active_group = 'cms';
$active_record = FALSE;
     $db['cms']['hostname'] = 'localhost';
    $db['cms']['username'] = 'yoloo_cms';
    $db['cms']['password'] = 'password'; 
    $db['cms']['database'] = 'yoloo_cms'; 
    $db['cms']['dbdriver'] = 'mysql';
    $db['cms']['dbprefix'] = '';
    $db['cms']['pconnect'] = TRUE;
    $db['cms']['db_debug'] = TRUE;
    $db['cms']['cache_on'] = FALSE;
    $db['cms']['cachedir'] = '';
    $db['cms']['char_set'] = 'utf8';
    $db['cms']['dbcollat'] = 'utf8_general_ci';
    $db['cms']['swap_pre'] = '';
    $db['cms']['autoinit'] = TRUE;
    $db['cms']['stricton'] = FALSE;

    $db['hazeleger']['hostname'] = 'localhost';
    $db['hazeleger']['username'] = 'yoloo_websites';
    $db['hazeleger']['password'] = 'password2'; 
    $db['hazeleger']['database'] = 'yoloo_hazeleger'; 
    $db['hazeleger']['dbdriver'] = 'mysql';
    $db['hazeleger']['dbprefix'] = '';
    $db['hazeleger']['pconnect'] = TRUE;
    $db['hazeleger']['db_debug'] = TRUE;
    $db['hazeleger']['cache_on'] = FALSE;
    $db['hazeleger']['cachedir'] = '';
    $db['hazeleger']['char_set'] = 'utf8';
    $db['hazeleger']['dbcollat'] = 'utf8_general_ci';
    $db['hazeleger']['swap_pre'] = '';
    $db['hazeleger']['autoinit'] = TRUE;
    $db['hazeleger']['stricton'] = FALSE;

At my model i use this when i want to connect to a other db than the usual one:

function __construct()
{
  parent::__construct();
  $this->load->database('hazeleger',TRUE);
}

But at all time codeigniter connects to cms. When i remove

$active_group = 'cms';
$active_record = FALSE;

Codeingiter gives an error. When i tried this

function __construct()
{
  parent::__construct();
  $db2 = $this->load->database('hazeleger',TRUE);
}

function test()
{
      $query  = "SELECT * FROM cms_modules";
      $result = $db2->db->query($query);
      return $db2->result();
}

It gives an error. Variabele db2 does not exist. I just want to choose, at every model, wich db i want to connect to. But is doesn,t work. Does somebody know, how i can work with different databases at models.

Thank you very much!!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You have to save the variable $db2 as a class field. The you can access $this->db2 ...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...