Discuz x2.5 x3.0 多数据库配置与使用方法

说点什么好? 头会遇到这是。。。尴尬。。。。

用户部分数据 信息来源同库另外一个实例 现在要改成跨库 .

其实是做成api还是 直接数据库调用对我来说都很容易。 api 还可以做个缓存可惜我对另外一个项目知之甚少。 网上没有关于discuz 多数据库调用方式 今天这里给大家带来一个 我不确定这是一定最符合 disucz 原意的 多实例数据库 代码调用 但一定和好用。

成功案例基于 discuz 2.5
修改 conf/config_global.php

1
2
3
4
5
6
7
8
9
//新增数据库配置信息
 
$_config['db']['2']['dbhost'] = '192.168.1.2';
$_config['db']['2']['dbuser'] = 'root';
$_config['db']['2']['dbpw'] = '123';
$_config['db']['2']['dbcharset'] = 'utf8';
$_config['db']['2']['pconnect'] = '0';
$_config['db']['2']['dbname'] = 'op';
$_config['db']['2']['tablepre'] = 'op_';
 
//那些表在另一个数据库读取
$_config['db']['map']['nav'] = 2;

修改source/class/db/db_driver_mysql.php  找到table_name 函数 增加一个字段

 

 

function table_name($tablename) {
        if(!empty($this->map) && !empty($this->map[$tablename])) {
            $id = $this->map[$tablename];
            if(!$this->link[$id]) {
                $this->connect($id);
            }
            $this->curlink = $this->link[$id];
            //从数据库 增加了这一句
            return $this->config[$id]['tablepre'].$tablename;
        } else {
            $this->curlink = $this->link[1];
        }
        return $this->tablepre.$tablename;
    }

 

 

 

运行  执行成功

print_r(DB::fetch_first("SELECT * FROM ".DB::table('nav')." limit 1"));

posted @ 2013-07-26 14:31  跨平台移动应用开发  阅读(351)  评论(0)    收藏  举报
phonegap中文网