php - Codeigniter:使用数据库存储多个用户的数据库名称

标签 php mysql database codeigniter

使用 Codeigniter 3.0.6

到目前为止,我一直在使用 Codeigniter 的标准设置。我有一个数据库,所有连接都很好。我遇到的问题是我想添加一个“global_accounts”数据库,根据当前登录的用户将选择要加载的数据库。

Global_Accounts
--------------------------------------------------------
user             | coolUser                    | user2
pass             | coolPassword                | passy
url              | coolestsite.mysite.com      | u2.mysite.com
database_name    | coolestsite_application_db  | u2_application_db

就我而言,应用程序数据/架构并不重要。我想要的(并且将要设置,但超出了这个问题的范围)是当用户注册时,他们将填写用户、通行证和网址,并且将自动创建 db_name。然后,该脚本将创建一个具有该名称的新数据库,为用户创建应用程序数据库的空白副本。

所以现在,我们正在对其进行硬编码,因此我们可以假设它运行良好。

我想要的是Codeigniter的database.php文件:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mysite.com',
    'username' => 'root',
    'password' => 'pass',
    'database' => 'coolsite_application_db'
    ...etc
);

我希望能够执行以下操作,而不是对该文件进行硬编码:

$db['global'] = array(
    'dsn'   => '',
    'hostname' => 'mysite.com',
    'username' => 'root',
    'password' => 'pass',
    'database' => 'global_accounts'
    ...
);

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'mysite.com',
    'username' => 'root',
    'password' => 'pass',
    'database' => $this->db['global']->get_db_name($loggedInUserId);
    ...etc
);

希望这是有道理的 - 我需要根据登录用户获取数据库名称。显然我需要构建一个模型或只是一个函数来获取它,但问题是在哪里?我是否添加模型,连接到全局数据库,然后在数据库配置中加载模型?是否有其他更简单、更有效的方法来做到这一点,或者就是这样?是否可以从 codeigniter 配置文件内部调用 codeigniter 核心文件?

最佳答案

使用 2 个数据库连接。 1 表示全局用户帐户,1 表示实际用户数据库。然后创建一个辅助函数来获取用户数据库。只是一个想法。

关于php - Codeigniter:使用数据库存储多个用户的数据库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536693/

相关文章:

php - 如何在基于 cpanel 的共享托管平台上设置和运行 PHP WebSocket 服务?

Mysql - 复杂的查询给我带来了问题

php - 无法通过 PHP PDO 类连接到数据库

mysql - 两个事务无法在同一个表上获得 IX 锁,MySql

sql - 比较 Oracle 11g 中 2 个不同行的 2 个不同列

php - 是什么导致服务器出现 60,000 毫秒的延迟

php - 在 Chrome 中无效的 JSON,在 Firefox 中没有问题(太奇怪了!)

MySQL 列出实体并在连接表上应用 AND 过滤器

mysql - 在单独的表中或一起存储帖子评论

php - 你如何在没有真实用户输入模拟的情况下进行 HTML 表单测试?