1

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

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

关于我应该如何解决这个问题的任何想法。

4

1 回答 1

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);

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

于 2012-10-11T11:15:36.727 回答