我有一個功能如下: 當任何用戶登錄時我想根據登錄憑證 連接到特定的數據庫。通過基於登錄的codeigniter訪問數據庫
我試着用
$this->db->close();
and this->db->reconnect();
,但它並沒有幫助
我有一個功能如下: 當任何用戶登錄時我想根據登錄憑證 連接到特定的數據庫。通過基於登錄的codeigniter訪問數據庫
我試着用
$this->db->close();
and this->db->reconnect();
,但它並沒有幫助
我想通了,我的答案..編碼如下:
在我添加了一個新的數據庫配置的database.php中文件:
$db['db2']=$db['default'];
$db['db2']['database'] = 'new_db2';
,然後在所有的模型構造函數我把把下面的代碼:
$new_db = $this->load->database('db2', TRUE);
$this->db = $new_db;
所以在這種情況下,我不需要改變我所有的querie秒。歡呼!!! :)
如果你在所有的模型中都有這個,而不是你爲什麼甚至需要原始的配置呢? – Alex
在你application/config/database.php
您可以定義多個數據庫連接做
$db['database1']['hostname'] = 'localhost';
$db['database1']['username'] = 'db1_root';
$db['database1']['password'] = 'xxxxxx';
$db['database1']['database'] = 'database1_name';
$db['database1']['db_debug'] = false; //Important
$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'db2_root';
$db['database2']['password'] = 'xxxxxx';
$db['database2']['database'] = 'database2_name';
$db['database2']['db_debug'] = false; //Important
然後你就可以加載特定的數據庫做
$database1 = $this->load->database('database1', true);
$database2 = $this->load->database('database2', true);
然後,而不是做/不管通過傳遞一個配置數組$this->load->database()
$this->db->query();
你需要做的要麼
$database1->query();
$database2->query();
感謝您的答覆,但我想要更簡單的方法來做到這一點實際上..因爲我已經編碼完整的應用程序..和一個新的功能是以訪問不同的數據庫..所以我必須在這種情況下更改完整的代碼:( – Simone
您可以使用您的控制器/模型/庫動態配置連接。
$config['hostname'] = "localhost";
$config['username'] = $user_name;
$config['password'] = $user_password;
$config['database'] = $user_database;
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$user_db = $this->load->database($config, true);
你打算爲不同的用戶連接不同的數據庫嗎? –
在沒有用戶..在登錄頁面我已經給了一年選擇..並根據選擇的年份數據庫名稱連接應設置 – Simone
http://stackoverflow.com/questions/11622872/how-用戶指定的數據庫在codeigniter連接 - 檢查這 –