Обновление локальной и веб-базы данных с сайта codeigniter - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть сайт Codeigniter, который размещен на глобальном сервере и подключен к глобальной базе данных. Я хочу подключить другую базу данных, которая размещена локально (192.168.xx). Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 11 февраля 2020

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

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

Массив конфигурации по умолчанию Ниже приведена структура массива конфигурации базы данных Codeigniter по умолчанию:

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'mydefaultdatabase';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['autoinit'] = FALSE;
$db['default']['stricton'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';

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

$db['anotherdb']['hostname'] = 'XXX.XXX.X.XXX';
$db['anotherdb']['username'] = 'another_user';
$db['anotherdb']['password'] = '';
$db['anotherdb']['database'] = 'anotherdatabase';
$db['anotherdb']['dbdriver'] = 'mysql';
$db['anotherdb']['dbprefix'] = '';
$db['anotherdb']['pconnect'] = TRUE;
$db['anotherdb']['db_debug'] = FALSE;
$db['anotherdb']['cache_on'] = FALSE;
$db['anotherdb']['cachedir'] = '';
$db['anotherdb']['char_set'] = 'utf8';
$db['anotherdb']['dbcollat'] = 'utf8_general_ci';
$db['anotherdb']['swap_pre'] = '';
$db['anotherdb']['autoinit'] = FALSE;
$db['anotherdb']['stricton'] = FALSE;

Подключение к нужной базе данных

На данный момент в вашем примере проекта есть две базы данных. Для подключения к указанной базе данных c необходимо указать имя базы данных. Вот правильный синтаксис:

this->load->database(anotherdb, TRUE)

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

$this->legacy_db = $this->load->database(anotherdatabase, true);

Получить результат из 'mydefaultdatabase'

$this->legacy_db->select ('*');
$this->legacy_db->from ('mydefaultdatabase');
$query = $this->legacy_db->get();
$result = $query->result ();

Теперь, если вам нужно работать со второй базой данных, вы должны отправить соединение в переменную, которая может использоваться в вашей модели функция:

function db_calling_model_method()
{
   $otherdb = $this->load->database('anotherdb', TRUE); // the TRUE paramater tells CI that you'd like to return the database object.
   $query = $otherdb->select('column_one, column_two')->get('table');
   var_dump($query);
}

Закрыть соединения

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

$this->db->close(); // for default Connection
$this->legacy_db->close(); // 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...