Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一个应用程序的多个数据库连接_Php_Mysql_Smarty - Fatal编程技术网

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

Php 一个应用程序的多个数据库连接,php,mysql,smarty,Php,Mysql,Smarty,我正在使用这个php邮件应用程序,我试图在一个文件夹下拥有多个数据库,而不必反复重复。db连接正在使用smarty模板,我不太确定如何进行 应用程序文件: 我正在尝试这样做: 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 这是DB连接

我正在使用这个php邮件应用程序,我试图在一个文件夹下拥有多个数据库,而不必反复重复。db连接正在使用smarty模板,我不太确定如何进行

应用程序文件:

我正在尝试这样做:

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
这是DB连接器的我的config.php文件:

这里还有DB的类。

我不熟悉Pommo,但从您的问题来看,我认为您正在尝试通过一个应用程序安装创建某种多用户环境,但使用不同的数据库设置。通常(对于任何应用程序)都没有直接或琐碎的方法来实现这一点

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

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

  • 开始寻找其他应用程序
  • 开始寻找其他已经写下你想要的东西的人
最后,Smarty不必对数据库连接做任何事情。我想象Pommo使用Smarty作为模板或将Smarty模板放入数据库中,但实际的数据库设置必须在PHP中的某个地方进行


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

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


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

是的,老实说,我正在寻找一个快速解决方案。我不想在这方面花费太多时间。你知道关于如何做到这一点的任何示例链接吗?我试图解释你通常如何修改任何应用程序来实现你想要的。这只不过是编写一个简单的转发/登录页面并修改config.php。然而,由于这不是直截了当的,我不认为有像这样的完成和书面教程。你真的只限于这样做吗?有没有其他更简单的解决方案?是的,创建一个新的登录页面可能是最好的方法,但是新的登录页面是否会绕过pommo登录页面,或者只是重新引导它再次登录?如果你想绕过pommo登录系统,你必须以某种方式输入登录系统。您不能让Pommo决定登录是否有效,因为在此之后必须重定向。您可以创建一个中心Pommo安装,并在验证后使用用户名通过使用config.php中的Pommo用户数据“重定向”到正确的Pommo。但这可能会变得相当棘手,因为在config.php中,您不知道当前Pommo用户是中心Pommo用户还是分散安装用户。
[db_hostname] = localhost
[db_username] = root
[db_password] = root
[db_database] = db_1
[db_prefix] = db_