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

时间:2012-06-06 15:07:57

标签: php mysql smarty

我正在使用这个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

这是我的数据库连接器的config.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

1 个答案:

答案 0 :(得分:1)

我不熟悉Pommo,但是根据您的问题,我认为您正在尝试使用一个应用程序的安装创建某种多用户环境,但具有不同的数据库设置。通常(对于任何应用程序)没有直接或琐碎的方法来执行此操作。

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

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

  • 开始寻找其他应用程序。
  • 开始寻找已经写下你想要的东西的其他一些东西。

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


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

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

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