[英]Codeigniter - Multiple database connections - local and remote
我當前正在構建一個應用程序,用戶可以通過該應用程序輸入自己的個人數據庫連接來利用其MySQL數據庫中的數據。
這意味着我將有兩個數據庫連接-我的本地(管理會話等)和遠程的用戶。
任何人都可以建議管理這兩個連接的最佳方法嗎? 我已經看過分貝群體- http://codeigniter.com/user_guide/database/connecting.html然而用戶數據庫連接將被會話瓦爾設置,所以我不能把在配置文件的遠程數據庫的詳細信息。
我嘗試在類中手動設置新的數據庫組,例如:
$db['foreign']['hostname'] = $this->session->userdata('hostname');
$db['foreign']['username'] = $this->session->userdata('dbuser');
$db['foreign']['password'] = $this->session->userdata('dbpassword');
$db['foreign']['database'] = $this->session->userdata('dbname');
$db['foreign']['dbdriver'] = "mysql";
$db['foreign']['dbprefix'] = "";
$db['foreign']['pconnect'] = FALSE;
$db['foreign']['db_debug'] = TRUE;
$db['foreign']['cache_on'] = FALSE;
$db['foreign']['cachedir'] = "";
$db['foreign']['char_set'] = "utf8";
$db['foreign']['dbcollat'] = "utf8_general_ci";
$foreign_db = $this->load->database('foreign', TRUE);
但是我在負載線上出現異常:
You have specified an invalid database connection group.
誰能建議我如何實現這一目標?
非常感謝,本。
為了使用組調用語法,必須在配置文件中定義組。 CI包括將配置直接傳遞到數據庫加載器的功能。 (注意:這可能僅是CI 2+功能)
您想要這樣的東西:
$db['hostname'] = $this->session->userdata('hostname');
$db['username'] = $this->session->userdata('dbuser');
$db['password'] = $this->session->userdata('dbpassword');
$db['database'] = $this->session->userdata('dbname');
$db['dbdriver'] = "mysql";
$db['dbprefix'] = "";
$db['pconnect'] = FALSE;
$db['db_debug'] = TRUE;
$db['cache_on'] = FALSE;
$db['cachedir'] = "";
$db['char_set'] = "utf8";
$db['dbcollat'] = "utf8_general_ci";
$foreign_db = $this->load->database($db, TRUE);
在嘗試加載時,系統可能不知道“外部”組。
您不應該在配置文件中加載任何內容。 這不是配置文件的用途,這基本上就是問題所在。
如果您確實需要自動加載外部數據庫,請通過擴展CI控制器並將其加載到其構造中來完成。
您可以使用鈎子獲取會話變量,並填充config vars預連接。
否則,您可以從控制器手動調用第二個數據庫類,並使用會話類定義詳細信息?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.