Codeigniter-使用多个数据库

2021/01/31 05:41 · php ·  · 0评论

database.php

$db['default']['hostname'] = "192.168.2.104";
$db['default']['username'] = "webuser";
$db['default']['password'] = "----";
$db['default']['database'] = "vad";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

$db['stats']['hostname'] = "192.168.2.104";
$db['stats']['username'] = "webuser";
$db['stats']['password'] = "---";
$db['stats']['database'] = "vad_stats";
$db['stats']['dbdriver'] = "mysql";
$db['stats']['dbprefix'] = "";
$db['stats']['pconnect'] = TRUE;
$db['stats']['db_debug'] = TRUE;
$db['stats']['cache_on'] = FALSE;
$db['stats']['cachedir'] = "";
$db['stats']['char_set'] = "utf8";
$db['stats']['dbcollat'] = "utf8_general_ci";

问题是我只能在配置中定义one
$active_group,default或stats。我遵循了CodeIgniter文档,并添加了以下内容:

$DB2 = $this->load->database('stats', TRUE);

这样,我连接到第二个数据库,但是失去了与第一个数据库的连接。有没有人对如何加载两个数据库有任何想法,而不必在所有模型构造函数中执行以下操作?

$database1 = $this->load->database('database1', TRUE);
$database2 = $this->load->database('database2', TRUE); 

问候,

佩德罗

除了应用Camacho提到的hack之外,您还可以将database.php文件中的'pconnect'标志设置为FALSE以进行所有连接。

codeigniter中有一个错误。在一行中插入一行即可解决整个问题。这是原始来源:http : //koorb.wordpress.com/2007/11/16/codeigniter-connect-to-multiple-databases/

**此修复不适用于PostgreSQL

这是一份副本,以防万一该站点出现故障。

行号已更改。这是来自codeigniter的错误修复:


启动错误修正

描述

所有数据库调用都转到同一个数据库(最后一个已初始化)

要解决此问题,请更改/system/database/DB_driver.php中的simple_query函数:

function simple_query($sql)
{
    if ( ! $this->conn_id)
    {
        $this->initialize();
    }
   
    $this->db_select(); //<-----------------  Added this line
    return $this->_execute($sql);
}

这样可以完全解决问题,因此您可以在模型中执行类似的操作

$this->legacy_db = $this->load->database('legacy', true);

当前,codeigniter无法以持久连接连接到多个数据库。因此,您应该关闭连接的持久性。您可以做到这一点。

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

$db['stats']['pconnect'] = FALSE;

我修复了更改框架上的DB_driver.php的问题。

在此功能中,我添加了一个功能$this->db_select();,使用2个数据库时,您再也不会失去连接。

function simple_query($sql)
{
    if ( ! $this->conn_id)
    {
        $this->initialize();
    }

    $this->db_select();

    return $this->_execute($sql);
}

您可以尝试在session.php文件中修改函数CI_Session()。

更换

$this->CI->load->database();

有了这个

$this->CI->db1 = $this->CI->load->database('default', TRUE);
$this->CI->db2 = $this->CI->load->database('db2', TRUE);

这样,您无需在所有模型文件中加载2个db,而应直接通过对象使用它们。

$ this-> db1将访问默认组db,而$ this-> db2将访问db2组db。(两个数据库组都应在database.php中定义)


桑达

如果只需要在同一连接上使用其他数据库,则无需创建单独的数据库配置。您可以在需要时切换到其他数据库,如下所示:

$ this-> db-> db_select($ database2_name);

CodeIgbiter用户指南

本文地址:http://php.askforanswer.com/codeigniter-shiyongduogeshujuku.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!