簡體   English   中英

我們可以在Codeigniter的同一視圖中使用兩個數據庫嗎?

[英]Can we use two database in same view in Codeigniter?

我想從兩個不同的數據庫訪問數據。

我想將兩個數據庫中的記錄打印到同一視圖中。

現在,我的第一個查詢來自另一個數據庫,然后第二個查詢來自默認數據庫。 所以我收到一個錯誤,指出SecondDatabase.tablenmae不存在,實際上該表在默認數據庫中

所以我這樣定義它們:

$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'biz_prov';
$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['bizlms']['hostname'] = 'localhost';
$db['bizlms']['username'] = 'root';
$db['bizlms']['password'] = '';
$db['bizlms']['database'] = 'bizlms';
$db['bizlms']['dbdriver'] = 'mysql';
$db['bizlms']['dbprefix'] = '';
$db['bizlms']['pconnect'] = FALSE;
$db['bizlms']['db_debug'] = TRUE;
$db['bizlms']['cache_on'] = TRUE;
$db['bizlms']['cachedir'] = '';
$db['bizlms']['char_set'] = 'utf8';
$db['bizlms']['dbcollat'] = 'utf8_general_ci';
$db['bizlms']['swap_pre'] = '';
$db['bizlms']['autoinit'] = TRUE;
$db['bizlms']['stricton'] = TRUE;

現在在“我的視圖”中,有一行我從默認數據庫中獲取數據。

然后在第二行中,我要從另一個數據庫中獲取數據,因此,我加載了該數據庫:

$this->db = $this->load->database('bizlms', TRUE);

但是我在第一行中從默認數據庫中獲取數據,但出現錯誤:

表bizlms.tablname不存在

如何在同一個視圖上使用兩個數據庫?

是的,您可以使用2個或更多數據庫來獲取信息,然后將其顯示在視圖上

application / config / database.php

$active_group = 'default';

$db['default']['hostname'] = "host";
$db['default']['username'] = "username";
$db['default']['password'] = "password";
$db['default']['database'] = "database1";
$db['default']['dbdriver'] = "mysqli";
$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['stats']['hostname'] = "host2";
$db['stats']['username'] = "username";
$db['stats']['password'] = "password";
$db['stats']['database'] = "database2";
$db['stats']['dbdriver'] = "mysqli";
$db['stats']['dbprefix'] = "";
$db['stats']['pconnect'] = TRUE;
$db['stats']['db_debug'] = TRUE;
$db['stats']['cache_on'] = FALSE;
$db['stats']['cachedir'] = "";
$db['stats']['char_set'] = "utf8";
$db['stats']['dbcollat'] = "utf8_general_ci";

controller.php

function do_somthing(){
    $this->load->model(array('model_db1', 'model_db2'));

    $info_db1  = $this->model_db1->get_info1();
    $info_db2  = $this->model_db2->get_info2();

    $data      = array(
                       'info1'  =>  $info_db1,
                       'ifno2'  =>  $info_db2
                      );

    $this->load->view('view', $data);
}

model_db1.php

public function __construct(){
    parent::__construct();

    $database1 = $this->load->database('default', TRUE);
}

function get_ifno1(){
    return $database1->db->get('table')->result();
}

model_db2.php

public function __construct(){
    parent::__construct();

    $database2 = $this->load->database('stats', TRUE);
}

function get_ifno2(){
    return $database2->db->get('table')->result();
}

view.php

<div>
    <?php var_dump($info1)?> 
</div> 
<hr>
<div>
    <?php var_dump($info2)?> 
</div> 

嘗試這樣,將數據庫名稱保留在一個變量中,然后使用該變量來獲取數據:

<?php 
$dsn1 = 'mysql://root@localhost/biz_prov'; 
$db1 = $this->load->database($dsn1, true); 
$user_table = $this->session->userdata('user_table'); 
$db1->select($user_table.'.id,display_name,ext,email,auth_user,base_ini_filename,base_ini_id,custom_ini_filename,uc_user,uc_password'); 
$db1->where($user_table.'.site_key',$site_item); 
$db1->join('base_ini','base_ini.id ='.$user_table.'.base_ini_id'); 
$db1->from($user_table); 
$query = $db1->get(); 
$result = $query->result_array(); 
?>

暫無
暫無

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

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