有没有办法使用controller
中的codeigniter
重新配置数据库?
假设我在数据库配置中有这段代码
$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';
在controller
中使用codeigniter
。这可能吗?
答案 0 :(得分:0)
您可以在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();
了解更多details
答案 1 :(得分:0)
是的,你可以这样做。在控制器功能内部指定条件,然后添加以下代码:
$config['hostname'] = "localhost";
$config['username'] = "admin";
$config['password'] = "password";
$config['database'] = "db_admin";
$this->load->database($config);
现在您可以访问新的数据库配置。同样禁用缓存,
$db['default']['cache_on'] = FALSE;
在config文件夹中的database.php文件中。
希望它有所帮助。
答案 2 :(得分:0)
看起来我找到了解决方案。不知道是不是更好。但它总比没有好。
我试过了
$config['hostname'] = "localhost";
$config['username'] = "admin";
$config['password'] = "password";
$config['database'] = "db_admin";
$this->load->database($config);
并尝试了很多方法..但它总是从database
文件夹
config
然后我找到了这个基本的php方法来调用database
我想要的
$dbname = 'my_db';
$mysqli = new mysqli("localhost", "root", "", $dbname);
$result = $mysqli->query("query")`
$result->close();
我知道我是多么愚蠢,答案多么愚蠢......但它总比没有好哈哈哈哈哈哈