如何在 ci 中使用控制器重新配置数据库


How to reconfig database using controller in ci?

有没有办法在codeigniter中使用controller重新配置数据库?

假设我在数据库配置中有此代码

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'db';

然后我想改成这个

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'admin';
$db['default']['password'] = 'password';
$db['default']['database'] = 'db_admin';

codeigniter中使用controller。这可能吗?

您可以在database.php config文件夹中定义多个数据库,例如

//database 1 details
$db['db1']['hostname'] = 'localhost';
$db['db1']['username'] = 'root';
$db['db1']['password'] = '';
$db['db1']['database'] = 'db';
//database 2 details
$db['db2']['hostname'] = 'localhost';
$db['db2']['username'] = 'admin';
$db['db2']['password'] = 'password';
$db['db2']['database'] = 'db_admin';

您可以在脚本中连接到所需的数据库,如下所示

if(condition){
    $DB = $this->load->database('db1', TRUE);
}
else{
    $DB = $this->load->database('db2', TRUE);
}

当您像这样连接数据库时,您必须使用对象名称$DB而不是$this

$DB->query();
$DB->result();

而不是

$this->db->query();
$this->db->result();

更多详情

是的,你可以这样做。在控制器函数中指定条件,然后添加以下代码:

$config['hostname'] = "localhost";
$config['username'] = "admin";
$config['password'] = "password";
$config['database'] = "db_admin";
$this->load->database($config);

现在,您可以访问新的数据库配置。同时禁用缓存作为,

$db['default']['cache_on'] = FALSE;

在您的数据库中.php配置文件文件夹中的文件。

希望对您有所帮助。

看起来我已经找到了解决方案。不知道好不好。但总比没有好。

我试过了

$config['hostname'] = "localhost";
$config['username'] = "admin";
$config['password'] = "password";
$config['database'] = "db_admin";
$this->load->database($config);

并尝试了很多方法..但它总是从config文件夹中调用database

然后我找到了这个基本的 php 方法来调用我想要的database

喜欢这个

$dbname = 'my_db';
$mysqli = new mysqli("localhost", "root", "", $dbname);
$result = $mysqli->query("query")`  
$result->close();

我知道我有多愚蠢,答案有多愚蠢......但总比没有好哈