CodeIgniter: изменение подключения к базе данных по умолчанию на лету - PullRequest
0 голосов
/ 10 апреля 2019

После входа пользователя учетные данные базы данных собираются из базы данных.

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

Я нашел, что могу сделать:

$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);

Но я не уверен, как сделать это изменение в одном месте и применить ли оно к следующим запросам и отменить конфигурацию в базе данных.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Я обычно создаю класс модели в codeigniter и определяю свойство с именем $ dbsecond, а при построении я назначаю базу данных этому свойству

class PanelDb extends CI_Model
{
public $dbsecond;

public function __construct()
{
    $this->dbsecond=$this->load->database('panel', TRUE);
}
}

public function insertData(){
$this->dbsecond->insert(.....);
}

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

class Monitor extends CI_Controller {

public function __construct()
{
    parent::__construct();

    $this->load->model('login','model');
    $this->load->model('PanelDb ','panelmodel');
}
}

Тогда в контроллере я использую

$this->panelmodel->insertData(......)
0 голосов
/ 10 апреля 2019

Сначала вам нужно объявить 2-й параметр в load->database и создать экземпляр db следующим образом:

$db = $this->load->database($dsn,true); 

Затем вы можете использовать $ db для выполнения некоторого запроса, подобного этому

$db->query("Your SQL Code is here");

Вы можете поместить этот код в локальную функцию внутри некоторой модели или класса контроллера, чтобы удовлетворить ваши потребности

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