我正在尝试完成以下功能:我有一个到数据库的主连接(在application / config / database.php:db ['default']中),并且连接有效,它检索数据,我想要使用该数据建立与不同数据库的新连接。
这是可能的还是我需要创建一个外部PDO连接来处理它?
(我正在使用Codeigniter 3.1.0)
答案 0 :(得分:3)
在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);
}
}
答案 1 :(得分:0)
您可以将数组添加到/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
修改强>
也许你需要这篇文章 codeigniter database configuration programmatically form user input
答案 2 :(得分:0)
$this->db2 = $this->load->database('seconddb', TRUE); // 'seconddb' is a connection array key in database config like 'default'.
&#13;
有关详细信息,请参阅此答案here,repox已详细解释了所有内容。
如果需要更多帮助,我很乐意提供帮助。
Thanx,Happy Coding。