如何动态获取多个数据库连接?
How to get multiple database connections dynamically?
我需要 3 个与 Codeigniter 的数据库连接。我不知道有关这些数据库的主机、用户名或密码的任何信息。这意味着用户必须使用表单发送这些信息。
我所知道的是,可以添加另一个数组,例如 $db['another_db'] 到 config/database.php 但是我将如何设置主机名、用户名和动态密码?
我尝试使用自己的 class 来执行此操作,但我并没有真正工作:
<?php
class Connection_model extends CI_Model {
public function define_database($member, $host, $user, $pw, $database) {
$db[$member] = array(
'dsn' => '',
'hostname' => $host,
'username' => $user,
'password' => $pw,
'database' => $database,
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
}
public function get_person($member, $host, $user, $pw) {
$otherdb = $this->load->database($this->define_database($member, $host, $user, $pw, $database), TRUE);
$query = $otherdb->select('first_name, last_name')->get('person');
var_dump($query);
}
}
我在我的控制器上使用它是这样的:
$this->load->model('connection_model');
$this->connection_model->get_person('sender', 'localhost', 'root', '', 'test');
我收到消息:未定义的变量:数据库
我做错了什么?还是有其他方式获得另一个连接?
看看你的 get_person 方法,它有 4 个参数:
public function get_person(**$member, $host, $user, $pw**)
但在其中您调用方法 define_database 传递 5 个参数:
$this->define_database($member, $host, $user, $pw, **$database**)
CI 给出错误,因为第五个参数未在此范围内定义。
我需要 3 个与 Codeigniter 的数据库连接。我不知道有关这些数据库的主机、用户名或密码的任何信息。这意味着用户必须使用表单发送这些信息。
我所知道的是,可以添加另一个数组,例如 $db['another_db'] 到 config/database.php 但是我将如何设置主机名、用户名和动态密码?
我尝试使用自己的 class 来执行此操作,但我并没有真正工作:
<?php
class Connection_model extends CI_Model {
public function define_database($member, $host, $user, $pw, $database) {
$db[$member] = array(
'dsn' => '',
'hostname' => $host,
'username' => $user,
'password' => $pw,
'database' => $database,
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
}
public function get_person($member, $host, $user, $pw) {
$otherdb = $this->load->database($this->define_database($member, $host, $user, $pw, $database), TRUE);
$query = $otherdb->select('first_name, last_name')->get('person');
var_dump($query);
}
}
我在我的控制器上使用它是这样的:
$this->load->model('connection_model');
$this->connection_model->get_person('sender', 'localhost', 'root', '', 'test');
我收到消息:未定义的变量:数据库
我做错了什么?还是有其他方式获得另一个连接?
看看你的 get_person 方法,它有 4 个参数:
public function get_person(**$member, $host, $user, $pw**)
但在其中您调用方法 define_database 传递 5 个参数:
$this->define_database($member, $host, $user, $pw, **$database**)
CI 给出错误,因为第五个参数未在此范围内定义。