Discuz多个数据库配置,跨库调用其他网站数据-Discuz教程下载

Discuz多个数据库配置,跨库调用其他网站数据

来自版块: Discuz教程发表于: 2023-5-22 10:53:54
2057
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
基于用户的一个需求,用户的主网站是Discuz搭建的,另外一个网站是用帝国CMS搭建的;
用户的需求是:要把帝国CMS的某个数据库中的数据调用到discuz论坛的首页上来;
实现思路
1、修改config/config_global.php文件
  1. $_config['db']['1']['dbhost'] = 'localhost';
  2. $_config['db']['1']['dbuser'] = 'root';
  3. $_config['db']['1']['dbpw'] = 'root';
  4. $_config['db']['1']['dbcharset'] = 'gbk';
  5. $_config['db']['1']['pconnect'] = '0';
  6. $_config['db']['1']['dbname'] = 'wh7d';
  7. $_config['db']['1']['tablepre'] = 'pre_';

  8. // 新增外链数据库部分(下面的2就是第2个服务器,当然也可以有3、4、5个服务器)
  9. $_config['db']['2']['dbhost'] = 'localhost';
  10. // 如果是同一个服务器,就填写localhost,不在一个服务器,填写具体的服务器IP地址
  11. $_config['db']['2']['dbuser'] = 'rieueo';
  12. // 用户名
  13. $_config['db']['2']['dbpw'] = 'dfsadfasd';
  14. // 密码
  15. $_config['db']['2']['dbcharset'] = 'gbk';
  16. // 这里的编码注意下,要跟第一个服务器的编码保持一致,即使你的第二个数据是UTF8编码这里也填写GBK
  17. $_config['db']['2']['pconnect'] = '0';
  18. $_config['db']['2']['dbname'] = 'dfadsf';
  19. // 数据库名称
  20. $_config['db']['2']['tablepre'] = 'ree_';
  21. // 数据库前缀
  22. $_config['db']['map']['ecms_az'] = 2;
  23. // 这里注意下,ecms_az是你要调用数据库的表名,2就是从第二个数据库调用,这里可以填写多个表,一个表一行就行

  24. $_config['db']['slave'] = '';
  25. $_config['db']['common']['slave_except_table'] = '';
复制代码
2、修改source\class\db\db_driver_mysql.php,大概102行开始,看下面注释,需要添加一句话
  1.         function table_name($tablename) {
  2.                 if(!empty($this->map) && !empty($this->map[$tablename])) {
  3.                         $id = $this->map[$tablename];
  4.                         if(!$this->link[$id]) {
  5.                                 $this->connect($id);
  6.                         }
  7.                         $this->curlink = $this->link[$id];
  8.                         return $this->config[$id]['tablepre'].$tablename;//新加这一句
  9.                 } else {
  10.                         $this->curlink = $this->link[1];
  11.                 }
  12.                 return $this->tablepre.$tablename;
  13.         }
复制代码
3、具体调用数据
  1. <!--{eval $new_tips = DB::fetch_all("SELECT * FROM ".DB::table('ecms_az')." order by newstime desc LIMIT 18"); }-->
  2. <!--{loop $new_tips $value}-->
  3.       <li>
  4.        <a target="_blank" href="{$value['titleurl']}"> <img src="{$value['titlepic']}" alt="{$value['title']}">
  5.         <p class="item-tit">{$value['title']}</p>
  6.        </a>
  7.       </li>
  8. <!--{/loop}-->
复制代码
目前测试,基于X3.2。X3.3,X3.4都可以完美调用数据

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部