簡體   English   中英

Codeigniter-多個數據庫連接

[英]Codeigniter - multiple database connections

我在Codeigniter遇到多個數據庫連接問題。 在我的database.php中,我配置了兩個數據庫。

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

在我的模型中,當我想連接到另一個數據庫而不是通常的數據庫時,可以使用它:

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

但是在任何時候codeigniter都連接到cms。 當我刪除

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

Codeingiter給出錯誤。 當我嘗試這個

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();
}

它給出了一個錯誤。 Variabele db2不存在。 我只想在每個模型中選擇要連接的數據庫。 但是是行不通的。 有人知道嗎,我如何在模型上使用不同的數據庫。

非常感謝你!!

您必須將變量$ db2保存為類字段。 您可以訪問$ this-> db2 ...

為了將來的訪問者參考,負載將遵循以下原則:

$this->db2 = $this->load->database('hazeleger',true);

您必須更改db2類

    $query  = "SELECT * FROM cms_modules";
    $result = $this->db2->query($query);
    return result();

發生這種情況是因為您很可能已在/application/config/autoload.php中設置為自動加載/創建數據庫庫。

打開autoload.php並查找以下行:

 $autoload['libraries'] = array('database');

從陣列中刪除“數據庫”並保存。 現在它應該可以按預期在您的控制器中工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM