2014-12-05 88 views
1

我在我的本地服務器中生成項目,但文件數據庫保存在另一臺服務器上。我嘗試編輯這樣的配置database.php如何在codeigniter中連接數據庫多個服務器?

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

$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = ''; 
$db['default']['password'] = ''; 
$db['default']['database'] = ''; 
$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['database_two']['hostname'] = 'xxx.xxx.xx.xx'; 
$db['database_two']['username'] = 'vtis'; 
$db['database_two']['password'] = ''; 
$db['database_two']['database'] = 'vtis'; 
$db['database_two']['dbdriver'] = 'postgre'; 
$db['database_two']['dbprefix'] = ''; 
$db['database_two']['pconnect'] = TRUE; 
$db['database_two']['db_debug'] = TRUE; 
$db['database_two']['cache_on'] = FALSE; 
$db['database_two']['cachedir'] = ''; 
$db['database_two']['char_set'] = 'utf8'; 
$db['database_two']['dbcollat'] = 'utf8_general_ci'; 
$db['database_two']['swap_pre'] = ''; 
$db['database_two']['autoinit'] = TRUE; 
$db['database_two']['stricton'] = FALSE; 
$db['database_two']['port'] = 5432; 

但我不知道下一步之後。你能告訴我一步一步如何連接數據庫在另一臺服務器與codeigniter?

munit_list.php

*/ 
class Munit_list extends CI_Model 
{ 

    private $tbl_unit_list = 'unit_list'; 
    function __construct() 
    { 
     parent::__construct(); 
     $CI=&get_instance(); 
     $CI->database_two = $this->load->database('database_two', TRUE); 
     $this->database_two =& $CI->database_two; 
    } 

    function get_all_unit_list() 
    { 
     $this->database_two->order_by('unit_id','desc'); 
     $data = $this->database_two->get($this->tbl_unit_list); 
     return $data->result(); 
    } 

} 

我嘗試模型這樣的,但它不工作

+1

嘗試http://weblint4u.com/connecting-multiple-database-in-codeigniter/ – 2014-12-05 07:28:07

+0

曾嘗試調試看看發生了什麼? – 2014-12-05 08:19:41

+0

我嘗試var_dump($ data); \t \t \t exit();但瀏覽器不顯示任何東西,但在firefox中,當我f12顯示「HTML文檔的字符編碼沒有聲明。如果文檔包含US-ASCII範圍以外的字符,文檔將在一些瀏覽器配置中顯示爲亂碼文本。必須在文檔或傳輸協議中聲明頁面的編碼。「 – user3040085 2014-12-05 08:23:00

回答

0

它很容易。只是這3行:

$CI=&get_instance; 
$CI->database_two = $this->load->database('database_two', TRUE); 
$this->database_two =& $CI->database_two; 
+0

我們在哪裏白色代碼? – user3040085 2014-12-05 07:31:21

+0

這取決於你需要它的地方。如果您只需要一個控制器就可以將其添加到該控制器中。如果你需要更多的控制器...可能我會延長CI_CONTROLLER – 2014-12-05 07:34:56

+0

好吧。我們寫函數__construct()? – user3040085 2014-12-05 07:38:56

0

在您的模型中的構造函數只是添加您想要使用的數據庫。只要您在數據庫文件中定義它們,您可以隨意添加。

類Munit_list擴展CI_Model {

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

$這個 - > database_two(可以是你希望把它放在任何名稱);
$ this-> load-> database('database_two',TRUE); 'database_two'是您在數據庫文件中定義的名稱,TRUE參數用於返回數據庫對象的函數。

然後你可以使用它像:

function get_all_units_list(){ 
    $this->database_two->select("*"); 
    .... 
    .... 
} 

更多信息CodeIgniter Connecting to your databases