2012-10-11 37 views
1

我正在使用codeigniter來開發基於Web的應用程序。這將被各種不同的客戶端使用,每個客戶端都有自己的數據庫,但代碼庫相同。基於URL在動態代碼中設置數據庫

我希望能夠根據訪問它的客戶端(即基於url)設置database.php中的數據庫名稱。因此,如果clientA.com訪問它,那麼它應該將數據庫名稱設置爲clintA,如果clientB.com訪問它,那麼它應該將其設置爲clientB.com。

任何想法,我應該如何接近這一點。

回答

4

有幾種可能的方法,但可能最簡單的方法是在配置文件中使用數據庫組。在您的application/config/database.php文件中,使用多維數組爲每個客戶端創建不同的組。所以,你可以有:

$db['clientA']['hostname'] = ... 
$db['clientA']['username'] = ... 
etc... 
$db['clientB']['hostname'] = ... 
$db['clientB']['username'] = ... 
etc... 

現在,在您的應用程序,你可以只通過所需的組到你的負荷命令:

$this->load->database('clientA'); 

現在結合起來,與getenv的搶主機名,你應該是所有設置:

$clientHost = getenv('HTTP_HOST'); 
$this->load->database($clientHost); 

當然可能有更多的邏輯需要,但這應該讓你開始。

+0

+1擊敗我30秒,即將建議同樣 –

+0

謝謝大衛。我會按照你所建議的方式工作,看看它是如何發展的。 – nasaa