Php 需要在一个PDO中实现两个不同的远程MYSQL数据库连接吗

Php 需要在一个PDO中实现两个不同的远程MYSQL数据库连接吗,php,mysql,pdo,Php,Mysql,Pdo,iam正在开发一个多租户应用程序。我需要一个主意。就像我现在在黑暗的隧道里没有灯光一样 将有来自两个不同位置的两个数据库 数据库(A)-包含租户数据库(B)用户名、密码、IP地址的租户列表 数据库(B)-基于数据库(A)中选定租户的特定租户信息 我想要实现的是: 当用户在url中输入带有特定用户id的web url时,首先它将根据url中的用户id查询数据库(A)中的租户列表 然后,它将使用来自查询数据库(a)的凭证结果直接建立到数据库(B)的持久连接 希望能得到一些想法,给我带来一些灯光。谢谢

iam正在开发一个多租户应用程序。我需要一个主意。就像我现在在黑暗的隧道里没有灯光一样 将有来自两个不同位置的两个数据库

  • 数据库(A)-包含租户数据库(B)用户名、密码、IP地址的租户列表
  • 数据库(B)-基于数据库(A)中选定租户的特定租户信息
  • 我想要实现的是:

  • 当用户在url中输入带有特定用户id的web url时,首先它将根据url中的用户id查询数据库(A)中的租户列表
  • 然后,它将使用来自查询数据库(a)的凭证结果直接建立到数据库(B)的持久连接
  • 希望能得到一些想法,给我带来一些灯光。谢谢大家!

    以下是我尝试过的:

     public function func_get_user($id){
        $tenant = $this->client_info_func($id); // this is function to get Tenant credential from Database A for using in database B
    
        if (!empty($tenant)) {
            $pdo_client = $this->cliend_db_conn($tenant['client_db_name'],$tenant['client_db_username'],$tenant['client_db_pass'],$tenant['client_db_ip']); // this is the function to initiate PDO connection to Database B
        $Q = "SELECT user_id,user_name,client_id FROM user WHERE client_id =:id";
        $R = $pdo_client->prepare($Q);
        $R->bindParam(':id', $id);
        $R->execute();
        $result = $R->fetch(PDO::FETCH_ASSOC);
        return $result;
    
        }else{
            echo 'Sorry! you are not allowed tenant';
        }
    
    
     }
    

    你还没有发布任何代码。但逻辑如下:

    正常使用PDO连接到数据库A:

    $pdo_db_A = new PDO(... ;dbname='database_A', 'db_A_username', 'db_A_password');
    
    然后在数据库A上运行此查询:

    SELECT username, password FROM database_A_table WHERE user_id = ...
    
    以PHP变量(如数组)获取数据:

    $db['username'] = $row['username']; // $row being from the above query
    $db['password'] = $row['password'];
    
    与数据库B建立单独的PDO连接,并传入详细信息:

    $pdo_db_B = new PDO(... ;dbname='database_B', $db['username'], $db['password']);
    

    为什么两个独立的数据库而不是同一数据库中的两个表?这有什么困难?从数据库A中选择凭据。将它们放入PHP变量中,然后将它们作为参数传递给PDO连接到数据库B的位置。@RiggsFolly,数据库A将在我的站点中,而数据库B将在客户端站点中。然后正如@Andy所说,只需使用不同的变量名来保持连接,即
    $db1
    $db2
    由于PDO只连接到一个数据库主机IP,您可以确保在“一个”PDO中不会这样做。我明白了,所以第一次连接到数据库a我不应该使用PDO?第二个连接使用PDO?两者都使用PDO。已连接到数据库a(以获取详细信息)。然后是使用这些细节的数据库B的第二个PDO连接。没问题。我已经稍微更新了代码,以显示它使用了两个单独的PDO连接…Andy,我已经更新了我的代码,我是否需要在每次执行数据库B功能时调用hit database A?您需要在任何时候打开到数据库A的连接以获取详细信息(我的回答中的
    选择
    查询)。然后,您需要将它们传递到数据库B的连接。因此,当打开带有用户详细信息的URL时(正如您在问题中提到的),您可以在这里打开到db A的连接,获取详细信息,然后就可以将它们用于数据库B了。