用户登录后,将从数据库中收集数据库凭据。
我需要更改数据库连接以在以下查询中使用此凭据。
我发现我可以做到:
$dsn = 'dbdriver://username:password@hostname/database';
$this->load->database($dsn);
但是我不确定如何在一处进行此更改,它是否适用于下一个查询并丢弃数据库上的配置。
有什么想法吗?
答案 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(......)