在codeigniter中根据URL设置数据库(动态)

时间:2012-10-11 11:06:19

标签: php codeigniter

我使用codeigniter开发基于Web的应用程序。这将由各种不同的客户端使用,每个客户端都有自己的数据库,但代码库相同。

我希望能够根据访问它的客户端(即基于url)在database.php中设置数据库的名称。因此,如果clientA.com访问它,则应将数据库名称设置为clintA,如果clientB.com访问它,则应将其设置为clientB.com。

任何想法都应该如何解决这个问题。

1 个答案:

答案 0 :(得分: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);

当然可能需要更多逻辑,但这应该让你开始。

相关问题