CodeIgniter:动态更改默认数据库连接

时间:2019-04-10 04:21:34

标签: php codeigniter codeigniter-3

用户登录后,将从数据库中收集数据库凭据。

我需要更改数据库连接以在以下查询中使用此凭据。

我发现我可以做到:

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

但是我不确定如何在一处进行此更改,它是否适用于下一个查询并丢弃数据库上的配置。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,您需要在load->database中声明第二个参数,并创建一个实例数据库,如下所示:

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

然后您可以使用$ db通过执行这样的查询

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

您可以将该代码放入某个模型或控制器类中的局部函数中,以解决您的需求

答案 1 :(得分:0)

我通常在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(......)