我试图完成以下功能:我有一个主连接到数据库(内部应用程序/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
编辑
也许你需要这个职位以编程方式编写数据库配置,从用户输入