如何使用单个PDO实例处理多个数据库?

时间:2016-08-19 14:35:29

标签: php pdo

我有点问题。我写了一个PDO包装器,允许我对我的数据库执行查询。

现在我的应用程序是多租户的,这意味着我需要不同的数据库。数据源结构的结构如下:

(1) Main Db 

(n) Tenant DB

所以,我是一个主数据库,我所有的公司,以及我已登录凭据和用户公司信息的数据库。

当我的应用程序启动时,我会像这样调用我的db包装器:

$this->db = new Database('host', 'name', 'user', 'pass');

whis会在我的index.php中使用我的默认配置创建一个实例。当我的用户登录时,我将其数据库的连接设置存储到全局变量中。

现在问题是我需要在某些时候使用我的config.php数据库凭据,所以我需要在每个模型方法中一次又一次地重新声明数据库对象。这种情况很痛苦。

我可以做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果mysql用户有权访问这两个数据库,那么只需将数据库名称添加到表名中:

SELECT id,name FROM database_name.users_table

如果您需要以其他用户身份登录,那么是的,您需要创建一个新的PDO实例。