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"));

浙公网安备 33010602011771号