php如何在mysql中为for循环生成动态数据库连接

时间:2018-06-05 06:08:39

标签: php mysql phpmyadmin

我是新手工作的PHP,我正在研究如何通过php中的编码在数据库中动态地改变表

这样的数据库,

数据库名称:data_switch

表名 - 数据

 did   dataname  host  dbuser   dbpwd   dbname
 1     abc      local  root    root     abc_db   // here dataname create new database, when register new dataname
 2     pqr      ubuntu root    passwd   pqr_db

下面的php代码:

<?php
        $dsn = "localhost";
        $username = "root";
        $password = "passwd";


        $db = new PDO("mysql:host=$dsn;dbname=data_switch", $username, $password);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        foreach ($db->query("select * from data") as $row)
        {
           $dataname = $row['dataname'];
           $host = $row['host'];
           $dbuser = $row['dbuser'];
           $dbpwd = $row['dbpwd'];
           $dbname = $row['dbname'];

          $connection_array['data1'][] = array(

              'dataname' => $dataname,
              'host' => $host,
              'dbuser' => $dbuser,
              'dbpwd' => $dbpwd,
              'dbname' => $dbname
           );

        }
        echo "<pre>";
        print_r($connection_array);

       $dbh = new PDO("mysql:host=$host;dbname=$dbname", $dbuser, $dbpwd);
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   // here all dataname find but i dont know how to generate dataname's own connection. dynamically

?> 

我正在循环获取所有数据名称,但我无法动态地分享连接,我在表单中注册新的dataname,如 abc 然后它动态创建一个新数据库,但是当我改变时表格我没有得到如何通过每个自己的数据名称动态连接每个数据名称的主机,dbname,dbpwd。

任何有任何想法的机构请帮忙解决。感谢

1 个答案:

答案 0 :(得分:0)

我知道这是一篇旧文章,但它是在搜索中出现的,可能与我所提出的问题有关。

我有一个脚本,其功能与所要求的非常相似。您需要将连接放置在动态变量中。

例如

我在名为$ branchDcom的数组中有一个分支列表及其各自的数据库连接详细信息。我可以拨打我的所有分支机构的电话,而无需一直关闭连接和打开。

我有一个连接函数,该函数使用conn_dcom_branch('your_server','your_db','your_username','your_password')函数中发送的值连接到数据库

以下内容将创建与所有数据库的连接。

$test = $a ?? $b ?? 'default'

这为我提供了所有分支连接及其各自的数据库名称的数组。

要使用,只需输入分支名称,它将使用该连接:

$connection = array();
foreach ($branchDcom as $key => $value) {
    $branch = $value['Name'];
    if (!is_resource($connections[$branch]['conn'])) {
        ${'connection_'.$branch} = conn_dcom_branch($value['server'], $value['db'], $value['username'], $value['password']);
        ${'connection_'.$branch.'_db'} = $value['db'];
    }
}

这可能会帮助某人