互联网知识

精准传达 • 价值共享

洞悉互联网前沿资讯,探寻网站营销规律

查看其它板块

织梦DedeCms用SQL语句调用数据库任意内容方法

作者:狐灵科技 | 2019-12-29 17:04 |点击:

织梦DedeCms给我们提供了大量调用标签,供我们调用各种数据,但提供再多的标签,也有满足不了我们的时候,这时我们可以用SQL语句,灵活调用我们需要的内容。

如何任意调用数据库中的内容呢?

 

先举个例子:

{dede:sql sql="select body from dede_addonarticle where aid=2"}
[field:body/]
{/dede:sql}

相信熟悉SQL语言的朋友很容易看懂这句含义。意思其实就是查询数据表dede_addonarticle中的body字段内容,条件是aid=2,[field:body /]表示输出body字段的内容。

 

又如这句SQL标签样例代码:

{dede:sql sql="select content from dede_arctype where id=2"}
[field:content function=cn_substr(Html2Text(@me),600)/]
{/dede:sql}

根据上面的例子,应该很好理解了,这样语句输出的结果就是dede_arctype表中id=2的content字段的前200个中文。

这里主要说明一下cn_substr表示返回字符串的一部分,600表示截取600个字节(utf-8编码中一个中文占用3个字节,gbk编码中一个中文占用2个字节)。Html2Text参数代表把含有HTML的字符过滤掉,只显示文本。

 

其实除了上面的例子外,在Dede系统里面,我可以可以自由使用SQL语句来配合织梦标签进行更多的个性化调用。他们的基本参照格式为:

{dede:sql sql="select 字段 From 表名称 where 条件语句"}
[field:字段名/]
{/dede:sql}

 

由上面这种基本格式,我们就可以基本转换出一条调用文档列表的调用标签了,比如我们先取出10条dede_archives数据表中的内容,示例代码:

{dede:sql sql="select * From dede_archives limit 10"}
<a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
{/dede:sql}

 

如果我们想要从第3条开始调取,取出5条记录又该怎么写呢?mysql的语法中limit可以用来限制查询结果的条数,示例:

{dede:sql sql="select * From dede_archives limit 2,5"}
<a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
{/dede:sql}

解析:因为索引是从0开始计数的,所以第3条记录对应的索引就是2,limit 2,5可以理解为忽略2条,也就是从第3条开始,共取出5条记录。

 

上面代码中的文档链接地址的是动态的,如果我们需要静态地址,那么只需要进行一下转换,这里我们只需要对[field:id/]进行一下转换即可,转换后的完整代码为:

{dede:sql sql="SELECT * FROM dede_archives limit 10"}
<a href="[field:id runphp='yes']$id=@me;@me='';$url=GetOneArchive($id);@me=$url['arcurl'];[/field:id]" title="[field:title/]">[field:title function=cn_substr(@me,30,0)/]</a>
{/dede:sql}

   

 
多一份免费策划方案,总有益处。

请直接添加技术总监微信联系咨询

网站设计 品牌营销

多一份参考,总有益处

联系狐灵科技,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:023-68168040 / 大客户专线:15523356218