在Codeigniter中动态加载数据库连接数据


Load database connection data dynamically in Codeigniter

我试图完成以下功能:我有一个主连接到数据库(内部应用程序/config/database.php: db['default']),并且连接工作,它检索数据,我想使用该数据建立一个新的连接到不同的db。

是可能的还是我需要创建一个外部PDO连接来处理它?

(我使用Codeigniter 3.1.0)

在Touheed Khan的帮助下,我能够找到我的问题的解决方案,把它贴在这里,因为我不得不做一些建议的解决方案来使它工作。下面是我的解决方案是如何工作的:

Controller.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Controller extends CI_Controller {
 public $dynamicDB;
 public function __construct() {
  parent::__construct();
 }
 public function index() {
  //Somehow retrieve the following information from user.
  $host;
  $user;
  $pass;
  $dbname;
  $port;
  // End of retrieval information from user.
  $this->dynamicDB = array(
   'hostname' => $host,
   'username' => $user,
   'password' => $pass,
   'database' => $dbname,
   'dbdriver' => 'postgre',
   'dbprefix' => '',
   'pconnect' => FALSE,
   'db_debug' => TRUE,
   'port' => $port
  );
  $this->load->model('data_model');
  $result = $this->data_model->select($this->dynamicDB, 
                                      $this->get('id'));
  var_dump($result);
 }
}

Data_model.php

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Data_model extends CI_Model {
 function __construct(){
  parent::__construct();
 }
 public function returnQuery($query) {
  if ($query->num_rows() > 0) {
   return $query->result();
  } else {
   return array();
  }
 }
 public function select($dynamicDB, $id) {
  $dynamicDB = $this->load->database($dynamicDB, TRUE);
  $dynamicDB->select('*');
  $dynamicDB->where('id', $id);
  $dynamicDB->from('table');
  $query = $dynamicDB->get();
  return $this->returnQuery($query);
 }
}

$this->db2 = $this->load->database('seconddb', TRUE);    // 'seconddb' is a connection array key in database config like 'default'. 

请参考这里的答案了解更多信息,repox已经详细解释了所有内容。

如果需要更多的帮助,我很乐意帮忙。

你可以添加数组到/config/database.php

喜欢这篇文章http://tutsnare.com/connecting-multiple-database-in-codeigniter/以及CodeIgniter文档https://www.codeigniter.com/user_guide/database/connecting.html#connecting-to-multiple-databases

编辑

也许你需要这个职位以编程方式编写数据库配置,从用户输入