有没有办法在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();
我知道我有多愚蠢,答案有多愚蠢......但总比没有好哈