2012-10-11 29 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