gpt4 book ai didi

php - Zend 的动态数据库连接

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:08 24 4
gpt4 key购买 nike

我试图实现的结果涉及到拥有一个数据库的应用程序,该数据库具有存储系统上用户相关数据的最少表,该数据库将用于在用户登录应用程序时验证用户的登录详细信息。我希望能够在用户登录后根据存储在主数据库中的有关该用户的详细信息动态连接到另一个数据库。

基本上我希望系统上的每个用户都有自己的数据库,登录后连接到该数据库,并能够使用通用数据库模型类(因为每个用户的数据库将与其他用户的数据库具有相同的表) .

这可能吗?如果是这样,我将如何实现动态数据库连接(假设在验证其登录详细信息的操作中)。

如有任何帮助,我们将不胜感激。

最佳答案

最简单的答案是不建立第二个连接,而只是在确定给定用户需要的名称后更改默认架构。

例如,获取给定用户的辅助数据库的名称:

$db = Zend_Db::factory(...options...);
$secondary_db = $db->query("SELECT secondary_db
FROM user_data WHERE user = ?", $userid)
->fetchOne();

然后运行查询以更改架构。请注意 USE 语句不支持准备语句,因此您必须使用驱动程序 API 来执行它:

$db->getConnection()->query("use $secondary_db");

现在,如果您在不限定其模式的情况下引用一个表,您将在辅助数据库中获得该表实例。这包括您通过 Zend_Db 适配器或表类等运行的任何查询。

但是 USE 语句仅在您的辅助数据库驻留在与主数据库相同的数据库实例上并具有用户详细信息时才有效。而且这还假设您不需要针对数据库重新验证用户,因为每个用户都有不同的数据库级凭据。

关于php - Zend 的动态数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com