PHP, как создать динамическое соединение с базой данных для цикла в MySQL - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в работе с 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

?> 

Я получаю все данные в цикле, но я не могу динамически дифференцировать соединение, я регистрирую новое имя данныхв такой форме, как abc , тогда он динамически создает новую базу данных, но когда я изменяю таблицу, я не получаю, как динамически подключаться к хосту каждого имени, dbname, dbpwd через каждое собственное имя.

Если у вас есть идея, пожалуйста, помогите разобраться.Спасибо

1 Ответ

0 голосов
/ 25 февраля 2019

Я знаю, что это старый пост, но он был найден при поиске как возможная связь с вопросом, который у меня был.

У меня есть сценарий, очень похожий на то, что мне задают.Вам нужно поместить ваши соединения в динамическую переменную.

например.

У меня есть список филиалов и соответствующие им сведения о подключении к базе данных в массиве с именем $ branchDcom.Я могу звонить на все мои ветви, не закрывая и не открывая все время.

У меня есть функция подключения, которая подключается к базе данных с помощью отправленных значений в функции conn_dcom_branch ('your_server', 'your_db','your_username', 'your_password')

Следующее создает соединения со всеми базами данных.

$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'];
    }
}

Это дает мне массив всех соединений с филиалами и соответствующих им имен баз данных.

Чтобы использовать, просто введите имя филиала, и оно будет использовать это соединение:

$branch = 'select_name';
$query = "
    SELECT 
        your_field
    FROM 
         [".${'connection_'.$branch.'_db'}."].['table_name'] 
";
$rs = ${'connection_'.$branch}->execute($query);

Это может помочь кому-то

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...