一个应用程序的多个数据库连接


Multiple Database Connections For One App

我使用此php邮件应用程序,并且我试图在一个文件夹下拥有多个数据库,而不必一遍又一遍地重复此操作。数据库连接正在使用智能模板,我不太确定如何做到这一点。

应用程序文件:http://pommo-ext.googlecode.com/svn/trunk/

我正在尝试这样做:

If username/password is Smith => connect to DB_1 
If username/password is John => connect to DB_2 
If username/password is Jim => connect to DB_3

这是我的数据库连接器的配置.php文件:

http://pommo-ext.googlecode.com/svn/trunk/config.sample.php

[db_hostname] = localhost
[db_username] = root
[db_password] = root
[db_database] = db_1
[db_prefix] = db_

这里也是DB的类。http://pommo-ext.googlecode.com/svn/trunk/inc/classes/pommo.php

我不熟悉 Pommo,但从您的问题中,我认为您正在尝试通过一次安装应用程序但使用不同的数据库设置来创建某种多用户环境。通常(对于任何应用程序)没有直接或微不足道的方法可以做到这一点。

首先,您必须重写 Pommo 的所有内部逻辑,以确保它们根据用户名使用不同的数据库连接。但是,在这种情况下,用户名不能存储在任何数据库中,因为必须根据用户名选择数据库。您可以为此信息添加另一个数据库,但这太愚蠢了。

其次,你想要不同的数据库,但我无法想象你为什么要这样做。对于初学者来说,为什么不使用表前缀?其次,我确信Pommo具有某种多用户环境,因此您可以与多个用户共享相同的安装。也许这是不可能的,但你可以做两件事:

  • 开始寻找其他应用程序。
  • 开始寻找其他已经写出你想要的东西的昆虫学家。

最后,Smarty不必对数据库连接做任何事情。我想象Pommo使用Smarty进行模板化或将Smarty模板放入数据库中,但实际的数据库设置必须在PHP中的某个地方进行。


但是,如果您不需要一些"好"的解决方案,为严重的丑陋做好准备并且想要一个快速的解决方案,那么您可能可以使用PHP会话。您可以通过在登录页面上请求用户用户名来$_SESSION['custom_username']存储用户名。但请注意,在 Pommo 尝试验证传入其数据库中的用户名之前,您必须有一个登录页面,因为数据库依赖于用户名。我建议一个独立于您的 Pommo 安装的单独页面。也许您想创建类似使用 GET 参数、设置会话并转发到应用程序的文件之类的东西。

之后,在 config.php 中,您可以检查会话中的用户名并基于此更改属性。

为此,您必须正确设置 PHP 会话,如果 Pommo 已经使用了会话,您可能可以重用该功能,但请确保它不会干扰 Pommo 对它的使用。