我必须从主数据库中检索MySQL数据库信息,然后连接到该数据库,并获取一些记录。
我的意思是,持有一个数据库,我想加载另一个数据库。
用Codeigniter可以吗?现在我在我的模型中使用下面几行代码。
function connectDb($credential)
{
$config['hostname'] = $credential['server'];
$config['username'] = $credential['username'];
$config['password'] = $credential['password'];
$config['database'] = $credential['database'];
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
$DB2=$this->load->database($config);
$DB2->db->select('first_name,last_name');
$query = $DB2->db->get('person');
print_r($query);
}
不行,还有别的办法吗?
8条答案
按热度按时间cgfeq70w1#
您应该在“application/config/database.php”中提供第二个数据库信息
通常,您将设置
default
数据库组,如下所示:请注意,登录信息和设置在名为
$db['default']
的数组中提供。然后,您可以在新数组中添加另一个数据库-我们将其命名为“otherdb”。
现在,要实际使用第二个数据库,您必须将连接发送到另一个可以在模型中使用的变量:
这样就可以了。连接多个数据库的文档可以在这里找到:http://codeigniter.com/user_guide/database/connecting.html
ktca8awb2#
最好的方法是使用不同的数据库组。如果你想继续使用主数据库($this-〉db),只需关闭辅助数据库的persistent connexion配置选项。只有主数据库才能使用持久连接:
主数据库
辅助数据库(注意pconnect设置为false)
然后,您可以将辅助数据库用作数据库对象,同时照常使用主数据库:
6ie5vjzr3#
用这个。
用途
ee7vknir4#
对我来说很好用(Codeigniter 3)...
这是默认数据库:
在database.php文件的底部添加另一个数据库
在autoload.php配置文件中
默认数据库通过自动加载数据库库可以正常工作,但是第二个数据库通过使用模型和控制器中的构造函数加载和连接。
d8tt03nd5#
在查看代码时,我发现唯一的错误是当您尝试加载第二个数据库时:
当您想要检索数据库对象时,必须在第二个参数中传递TRUE。
从Codeigniter User Guide:
通过将第二个参数设置为TRUE(布尔值),函数将返回数据库对象。
因此,您的代码应该改为:
这样就行了。
6tr1vspr6#
在模型中你必须调用
2sbarzqh7#
注意:将单词“group_one”和“group_two”更改为您要连接到的特定组名称(或者您可以如上所述传递连接值)。
通过将第二个参数设置为TRUE(布尔值),函数将返回数据库对象。
请访问https://www.codeigniter.com/userguide3/database/connecting.html了解更多信息。
jjjwad0x8#
作为对其他答案的补充,如果您想在模型本身内更改活动数据库组,从而不需要使用其他数据库连接,请在模型类内使用以下代码:
从控制器调用后,例如:
然后,您可以使用其他模型方法来处理新指定的数据库组,例如:
注:目前仅使用codeigniter 3进行测试。