Как я могу подключиться к базе данных MySQL динамически с различными значениями имени хоста, имени пользователя, пароля - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть общая таблица базы данных, которая содержит разные имена БД для разных клиентов.Мне нужно подключить динамически эти БД, так как я получаю значение имени хоста, имени пользователя и пароля из запроса.Я использую codeigniter и php7.2.Пожалуйста, нужно немного предложить.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

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

Помощник:

if (!function_exists('get_dynamic_db')){
    function get_dynamic_db()
    {
        $CI =& get_instance();
        $db = $CI->session->user_data('other_db');
        $user = $CI->session->user_data('user');
        $pass = $CI->session->user_data('pass');

        $config_app = array(
            'dsn'   => '',
            'hostname' => 'localhost',
            'username' => $user,
            'password' => $pass,
            'database' => $db,
            'dbdriver' => 'mysqli',
            'dbprefix' => '',
            'pconnect' => FALSE,
            'db_debug' => (ENVIRONMENT !== 'production'),
            'cache_on' => FALSE,
            'cachedir' => '',
            'char_set' => 'utf8',
            'dbcollat' => 'utf8_general_ci',
            'swap_pre' => '',
            'encrypt' => FALSE,
            'compress' => FALSE,
            'stricton' => FALSE,
            'failover' => array(),
            'save_queries' => TRUE
        );

        return $CI->load->database($config_app,TRUE);
    }
}

Образец модели:

var $dynamic_db;

public function __construct() {

    $this->load->database(); //ur regular DB -- $this->db
    $this->dynamic_db = get_dynamic_db(); //ur dynamic DB -- $this->dyniamic_db
}

public function ping_dynamic_db()
{
    $this->dynamic_db->from('some_table');
    $query = $this->dynamic_db->get();

    return $query->row();
}
0 голосов
/ 14 ноября 2018

В CI вы можете сделать двумя способами.

  1. Из config / database.php

    Вы можете вызвать базу данных по умолчанию для выборки строк и запуска в цикле с назначением динамического ключа. При необходимости вы можете назвать это удостоверение базы данных.

  2. от модели или контроллера.

    $ this-> load-> базы данных (массив ( 'hostname' => 'localhost', 'username' => 'root', 'пароль' => '', 'database' => 'ci', 'dbdriver' => 'mysqli', ));

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