Как подключиться к пользовательской базе данных в codeigniter

У меня есть проект, в котором я должен связаться с указанной пользователем базой данных. Я хочу реализовать его в правильном стиле codeigniter, но я не знаю, как я могу сделать, что codeigniter хранит учетные данные базы данных в файле database.php, есть ли способ сделать его динамическим. Или есть ли другой подход к достижению этого? Я искал его, но не нашел ничего полезного. Любая помощь и предложение будут оценены.

ОБНОВИТЬ:
Проект посвящен отчетности. У меня есть форма, в которой я получил учетные данные для входа в базу данных, а затем сгенерировал отчет о своей базе данных, все будет сделано во время выполнения.

Solutions Collecting From Web of "Как подключиться к пользовательской базе данных в codeigniter"

Согласно руководству , вы можете вручную передать настройки подключения к базе данных через третий параметр модели $this->load->model :

 $config['hostname'] = "localhost"; $config['username'] = "myusername"; $config['password'] = "mypassword"; $config['database'] = "mydatabase"; $config['dbdriver'] = "mysql"; $config['dbprefix'] = ""; $config['pconnect'] = FALSE; $config['db_debug'] = TRUE; $this->load->model('Model_name', '', $config); // or as gorelative notes, to access multiple databases: $DB2 = $this->load->database($config, TRUE); 

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

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

 $this->db->db_select($database2_name) 

Это решило для меня.

Первое предупреждение

Следует отметить, что это, вероятно, не рекомендуется, если вы не ограничены именами, разрешенными для пользователей, или не позволяете им сами выбирать их.

Если первый сценарий является обязательным, пожалуйста, дезинформируйте данные, и если вы знаете его определенный список имен db .. предоставите им список и выполните проверку против списка.

Что, как говорится:

Вот ваш описанный код. Я делаю это в своем контроллере. И ссылку $db2-> в моей модели.

 $config['hostname'] = "localhost"; $config['username'] = "myusername"; $config['password'] = "mypassword"; $config['database'] = $customUserDatabase; $config['dbdriver'] = "mysql"; $config['dbprefix'] = ""; $config['pconnect'] = FALSE; $config['db_debug'] = TRUE; $DB2 = $this->load->database($config); $q = $DB2->where('id', 13)->get('tablename'); if( $q->num_rows() > 0 ){ return $q->result(); }else{ return false; } 

http://codeigniter.com/user_guide/database/connecting.html

Ссылка на часть о подключении к нескольким базам данных …


Подключение к нескольким базам данных

Если вам нужно подключиться к нескольким базам данных одновременно, вы можете сделать это следующим образом:

 $DB1 = $this->load->database('group_one', TRUE); $DB2 = $this->load->database('group_two', TRUE); 

Примечание. Измените слова «group_one» и «group_two» на определенные имена групп, к которым вы подключаетесь (или вы можете передать значения соединения, как указано выше).

Установив второй параметр в TRUE (boolean), функция вернет объект базы данных.

Когда вы подключаетесь таким образом, вы будете использовать свое имя объекта для выдачи команд, а не синтаксиса, используемого в этом руководстве. Другими словами, вместо выдачи команд с:

 $this->db->query(); $this->db->result(); etc... 

Вместо этого вы будете использовать:

 $DB1->query(); $DB1->result(); etc... 

Пример рабочего рабочего кода.

Я поставил фрагмент моего контроллера / модели, используя эту ту же самую функцию. Мне нужно было подключиться к нескольким базам данных, используя те же учетные данные / конфиги для нескольких db. В результате я смог использовать $this->db-> для получения конфигураций.

Вы можете увидеть его суть: https://gist.github.com/08a4f45da1ff7e177425