gpt4 book ai didi

php - 动态数据库切换 - Codeigniter

转载 作者:行者123 更新时间:2023-11-29 16:46:51 26 4
gpt4 key购买 nike

我想在运行时切换我的 codeigniter 多个数据库。我的默认数据库将彻底运行该页面,但是当我需要根据场景或要求切换到其他数据库时,我可以这样做。 通用模型函数适用于所有不同的数据库。 所以,我想使用动态选择器对多个数据库连接使用相同的模型和相同的函数,而不使用 session 或不传递函数变量

为了实现此目的,我在 cofig 中设置了一个名称,当我调用模型时,我在调用模型之前在 Controller 中设置了所需的数据库名称,然后尝试获取在 Controller 中设置的模型中的名称。但不幸的是我没有从 Controller 到模型获得名称。

数据库配置文件 -

$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'pass'
'database' => 'db1'
.......
);


$db['anotherDB'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'pass'
'database' => 'db2'
.......
);

Controller -

$this->config->set_item('active_db', 'anotherDB');
$sql = 'select * from user';
$anotherDB_record = $this->model->customQuery($sql);

print_r($anotherDB_record);


$this->config->set_item('active_db', 'default');
$sql = 'select * from customer';
$default_record = $this->model->customQuery($sql);

print_r($default_record);

模式 -

   protected $database;
function __construct() {
parent::__construct();
$oDB = $this->config->item('active_db');
$this->database = $this->load->database($oDB, TRUE);
}
function customQuery($sql){
$query = $this->database->query( $sql );
return $query->result();
}

这是我尝试切换数据库的方式。如果你们有任何其他切换多个数据库的最佳解决方案,请随时向我建议。

最佳答案

尝试以下示例动态配置另一个数据库

普通模型

function getOtherDB($groupID) {
$getRecord = $this->common_model->getRow('group_master', 'GroupID', $groupID);
if ($getRecord) {
$config['database'] = $getRecord->DBName;
$config['hostname'] = $getRecord->DBHostIP;
$config['username'] = $getRecord->DBHostUName;
$config['password'] = $getRecord->DBHostPassw;
$config['dbdriver'] = "mysqli";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$DB2 = $this->load->database($config, TRUE);
if ($DB2) {
return $DB2;
}
}
return FALSE;
}

在上面的示例中,我有 group_master 表,它通过传递 GroupId 来包含分组数据库详细信息我获取记录并根据组设置另一个数据库确保存储在数据库中的所有数据库配置信息都是加密格式 使用下面的示例来触发对其他数据库的查询

$result = $DB2->query("select * from group");
// $DB2 is other database instance you can create multiple db connection using above methos

关于php - 动态数据库切换 - Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com