调用方法

本标签的调用格式为:

{dede:sql sql="一条完整的SQL语句" appname="数据库配置参数"}
您的底层模板
{/dede:sql}

稍微有点细心的朋友可能就已经发现了,其实只是在SQL标签中多了一个appname参数,它的意思实际上指的就是您跨数据库调用的连接配置信息;

参数讲解

这个跨数据库调用的连接配置信息是如何配置的呢?请大家打开/include/tablie/sql.lib.php,找到大约65行开始的如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    // 引入配置文件
    if ($appname != 'default')
    {
        require_once(DEDEDATA.'/tag/sql.inc.php');
        global $sqltag;
        $config = $sqltag[$appname];
        if (!isset($config['dbname'])) return '';

// 链接数据库
        $linkid = @mysql_connect($config['dbhost'], $config['dbuser'], $config['dbpwd']);
        if(!$linkid) return '';
        @mysql_select_db($config['dbname']);
        $mysqlver = explode('.',$dsql->GetVersion());
        $mysqlver = $mysqlver[0].'.'.$mysqlver[1];

// 设定数据库编码及长连接
        if($mysqlver > 4.0)
        {
            @mysql_query("SET NAMES '".$config['dblanguage']."', character_set_client=binary, sql_mode='', interactive_timeout=3600 ;", $linkid);
        }

$prefix="#@__";
        $sql = str_replace($prefix, $config['dbprefix'], $sql);

// 校验SQL字符串并获取数组返回
        $sql = CheckSql($sql);
        $rs = @mysql_query($sql, $linkid);
        while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
        {
            $sqlCt++;
            $GLOBALS['autoindex']++;

// 根据程序判断编码类型,并进行转码,这里主要就是gbk和utf-8
            if (substr($cfg_soft_lang, 0, 2) != substr($config['dblanguage'], 0, 2))
            {
                $row = AutoCharset($row, $config['dblanguage'], $cfg_soft_lang);
            }

foreach($ctp->CTags as $tagid=>$ctag)
            {
                if($ctag->GetName()=='array')
                {
                    $ctp->Assign($tagid, $row);
                }
                else
                {
                    if( !empty($row[$ctag->GetName()]))
                    {
                        $ctp->Assign($tagid, $row[$ctag->GetName()]);
                    } else {
                      $ctp->Assign($tagid, "");
                    }
                }
            }
            $revalue .= $ctp->GetResult();
        }
        @mysql_free_result($rs);

}

上面这段代码的意思就是如果您的SQL标签的appname参数不等于default,那么就加载 DEDEDATA.'/tag/sql.inc.php' 这个配置文件,寻找相关的配置。
而DEDEDATA 是织梦系统的全局常量,代表程序的 /data 文件夹。
固我们可以打开这个文件看一下,您应该能看到如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
global $sqltag;
// phpwind8数据库连接配置
// ------------------------------------------------------------------------
$sqltag['phpwind8']['dbhost'] = 'localhost';
$sqltag['phpwind8']['dbname'] = 'phpwind8';
$sqltag['phpwind8']['dbuser'] = 'root';
$sqltag['phpwind8']['dbpwd'] = '123456';
$sqltag['phpwind8']['dbprefix'] = 'pw_';
$sqltag['phpwind8']['dblanguage'] = 'gbk';

// phpb2b数据库连接配置
// ------------------------------------------------------------------------
$sqltag['phpb2b']['dbhost'] = 'localhost';
$sqltag['phpb2b']['dbname'] = 'phpb2b';
$sqltag['phpb2b']['dbuser'] = 'root';
$sqltag['phpb2b']['dbpwd'] = '123456';
$sqltag['phpb2b']['dbprefix'] = 'pb_';
$sqltag['phpb2b']['dblanguage'] = 'utf8';
?>

其中phpwind8 和 phpb2b 就是跨服务器的配置信息了,您只需要将这里面的连接更改为您自己的即可。甚至还可以进行自定义,比如我们在末尾可以加上如下代码:

1
2
3
4
5
6
7
8
// discuz数据库连接配置
// ------------------------------------------------------------------------
$sqltag['discuz']['dbhost'] = 'localhost';//数据库服务器地址
$sqltag['discuz']['dbname'] = 'discuz';//数据库名称
$sqltag['discuz']['dbuser'] = 'xuewl_com';//数据库登录用户名
$sqltag['discuz']['dbpwd'] = 'xuewl_com';//数据库登录密码
$sqltag['discuz']['dbprefix'] = 'pre_';//数据库默认表前缀,用于#@__标识
$sqltag['discuz']['dblanguage'] = 'utf8';//数据库的编码

保存好文件以后关闭即可。

雨田SEOER在前台我们就可以通过如下具体代码调用了:

1
2
3
{dede:sql sql="select * from #@__common_member WHERE uid > 1 ORDER BY credits DESC LIMIT 0,8" appname="discuz"}
    用户名:[field:username/]
{/dede:sql}

织梦DEDE系统跨站跨数据库调用数据显示的更多相关文章

  1. 织梦dede文章列表调用标签的用法和规则

    织梦dede列表标签在任何模板的网站中都可能会使用到,而且我们在仿站的时候也经常要使用到列表标签.这里主机吧就给大家讲一下文章列表以及图片列表.软件列表以及分类信息列表标签的用法,和结合div+css ...

  2. 【织梦dedecms系统安全】完善DEDECMS目录的权限安全设置

    [织梦dedecms系统安全]完善DEDECMS目录的权限安全设置:   ../ [站点上级目录]   如果要使用后台的目录相关的功能需要有列出目录的权限     / [站点根目录]   需要执行和读 ...

  3. 【织梦手机端仿站】和PC一个后台

    卸载插件,织梦默认带手机站,无需复杂使用插件以后不方便升级.织梦2015年6月8日更新后,就添加了很多针对手机移动端的设计,最大的设计就是添加了生成二维码的织梦标签和织梦手机模板功能,织梦更新后,默认 ...

  4. 织梦DEDE网站后台如何上传附件

    如题,织梦DEDE网站后台如何上传附件?今天本人遇到这样的问题,在网站后台里点击一番后,成功上传了一个pdf文件和doc文件,特来分享经验. 工具/原料 织梦dede网站 doc文件 方法/步骤 1 ...

  5. 织梦(DEDE)CMS V5.3 覆盖任意变量导致远程包含漏洞

    漏洞版本: 织梦(DEDE)CMS V5.3 漏洞描述: 织梦内容管理系统,最强大的中文开源CMS网站管理项目,使用PHP+MySQL架构. 在文件include/common.inc.php中: f ...

  6. 织梦dede模板中广告的去除方法?

    织梦)dede模板中广告的去除方法1.我们先删除头部的广告,找到templetsdefault下的head.htm文件,打开后找到<div>{dede:myad name=’innerTo ...

  7. 织梦dedecms首页/列表页/内容页调用tag的方法(未测试)

    织梦dedecms首页/列表页/内容页调用tag的方法 在网站中tag是网站搜索相关文章的联系之一,也可以有专门的tag页面,在不同的页面也可以调用tag,而不是只有在首页和列表页才可以调用tag,这 ...

  8. dedecms织梦 v5.6 两处跨站漏洞

    漏洞版本: dedecms织梦 v5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标 ...

  9. dedecms织梦 v5.5 两处跨站漏洞

    漏洞版本: dedecms织梦5.5 漏洞描述: 北洋贱队(http://bbs.seceye.org)首发 demo1:http://www.dedecms.com/plus/search.php? ...

随机推荐

  1. Fidder详解-抓取HTTPS清求(Web/App)抓包分析(靠谱篇)

    为什么要学Fidder抓包? 学习接口,必须要学http协议,不要求您对协议的掌握有多深.只是希望你能够了解什么是协议.协议的报文.状态码等等!本文通过抓包工具Fidder带你进入接口的大门.我们通过 ...

  2. zoj 2812

    Quicksum Time Limit: 2 Seconds      Memory Limit: 65536 KB A checksum is an algorithm that scans a p ...

  3. C#中为什么不能再方法里定义静态变量(Static)

    c#的静态变量是在对象生成的时候分配内存空间的,而不是函数执行的时候. 如果在函数里定义,那么这个变量就需要在函数执行的时候分配内存空间,这是C#不允许的,至于为什么不允许,个是因为垃圾回收机制的问题 ...

  4. [luoguP1773] 符文之语_NOI导刊2010提高(02)(DP)

    传送门 f[i][j]表示前i个数余数为j的最优解 sum[i][j]表示字符串i~j所构成的数 #include <cstdio> #include <cstring> #d ...

  5. mysql免安装版配置使用

    mysql免安装版配置使用 1.下载解压 2.配置环境变量 变量MYSQL_HOME  = 解压目录 配置变量path 编辑,在后面加上  ;%MYSQL_HOME%\bin 3.修改配置文件 增加或 ...

  6. BZOJ1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    给n<=4000000,c,a1,b1,c1,a2,b2,c2,以c为初始得到的数,每次可以把得到的某个数x进行操作f1(x)=a1*x/c1+b1,f2(x)=a2*x/c2+b2,求最后能得 ...

  7. as3 二维数组的定义

    大家都知道as3里面是不能直接定义多维数组 所以不能直接用arr[2][3]这样的方法来获取数组里面的值.如何才能创立多维数组了? 方法如下先定义一个数组 var MapData:Array=new ...

  8. 一份关于webpack2和模块打包的新手指南(一)

    webpack已成为现代Web开发中最重要的工具之一.它是一个用于JavaScript的模块打包工具,但是它也可以转换所有的前端资源,例如HTML和CSS,甚至是图片.它可以让你更好地控制应用程序所产 ...

  9. Mac shell 小脚本开发(转)

    大多数程序员都喜欢偷懒的,我也不例外.相信好多Android开发的coder 在网络http请求方面,会浪费很多时间在接口调试这里..有时候,自己写了一个小测试,行还好,不行的话,还要跟写后台的哥们一 ...

  10. Org-mode五分钟教程ZZZ

    Table of Contents 1 源起 2 简介 2.1 获取 org-mode 2.2 安装 3 基础用法 3.1 创建一个新文件 3.2 简单的任务列表 3.3 使用标题组织一篇文章 3.4 ...