簡體   English   中英

Codeigniter-多個數據庫連接-本地和遠程

[英]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.

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