在众多内容管理系统中,DedeCMS(织梦内容管理系统)因其高效、易用而备受青睐。其中,$dsql(织梦数据库查询)是DedeCMS的核心技术之一,它让网站开发变得简单而高效。本文将深入解析DedeCMS $dsql,帮助开发者更好地理解和应用这一强大工具。
一、DedeCMS简介
让我们简单了解一下DedeCMS。DedeCMS是一款基于PHP+MySQL的开源内容管理系统,它自2004年发布以来,凭借其稳定、易用的特点,已经成为国内最受欢迎的CMS之一。DedeCMS拥有丰富的功能模块,如文章管理、产品展示、图片展示、留言板等,非常适合企业、个人网站的使用。
二、$dsql的作用
$dsql是DedeCMS的核心数据库查询类,它封装了数据库操作的相关方法,使得开发者可以轻松地进行数据库操作。下面,我们来详细了解$dsql的作用和特点。
1. 简化数据库操作
(表格1:$dsql常用方法及其功能)
方法名称 | 功能描述 |
---|---|
Query | 执行查询语句,返回查询结果集 |
FetchOne | 获取查询结果集中的第一条记录 |
FetchRow | 获取查询结果集中的当前行数据 |
Execute | 执行非查询语句(如INSERT、UPDATE、DELETE等) |
GetOne | 返回查询结果集中第一条记录的某个字段值 |
GetAll | 返回查询结果集中所有记录 |
GetField | 返回查询结果集中所有记录的某个字段值 |
GetFields | 返回查询结果集中所有记录的指定字段值 |
通过$dsql提供的方法,开发者可以轻松地执行SQL语句,无需手动编写复杂的数据库操作代码。
2. 提高安全性
(表格2:$dsql安全性特点)
安全性特点 | 描述 |
---|---|
防SQL注入 | 通过自动转义特殊字符,防止SQL注入攻击 |
防XSS攻击 | 对输出内容进行编码,防止XSS攻击 |
防病毒传播 | 系统定期更新,修复潜在的安全漏洞 |
$dsql内置了多种安全特性,可以有效防止SQL注入、XSS攻击等安全问题。
3. 支持多种数据库
$dsql支持多种数据库,包括MySQL、SQL Server、SQLite等,开发者可以根据实际需求选择合适的数据库。
三、$dsql的使用方法
下面,我们通过一个简单的例子,展示如何使用$dsql进行数据库操作。
(示例:获取文章列表)
“`php
// 创建$dsql对象
$dsql = new DedeSql();
// 设置数据库连接信息
$dsql->SetDatabase(0, ‘localhost’, ‘root’, ‘123456’);
// 编写查询语句
$sql = “
dedecms 列表点击加载更多读取数据库内容怎么实现
使用方法:
1、加载是用AJAX,需要先引用jQuery
2、模板在arcajax.php第二十八行请自行按需修改
3、arcajax.php放到plus目录下
HTML和js代码:
<divid=”loading27″>加载中</div>
<ahref=”javascript:;”id=”getMore”pnum=”2″class=”index-morebgwmt15″>浏览更多案例……</a>
<scripttype=”text/javascript”>
$(“#getMore”).click(function(){
var_this=$(this),
pnum=_this.attr(“pnum”),//分页码
typeid=1;//栏目ID
if(pnum==0){
returnfalse;
}
$(“#loading27”).show();
$.ajax({
url:'/plus/arcajax.php',
data:{typeid:typeid,pnum:pnum},
success:function(data){
if(data!=''){
$(“.index-list”).append(data);//数据显示到页面
_this.attr(“pnum”,Number(pnum)+1);//分页+1
}else{
_this.text(“没有更多的数据”);
_this.attr(“pnum”,0)
}
$(“#loading27”).hide();
}
})
returnfalse;
})
</script>
PHP代码(arcajax.php):
<?php
require_once(dirname(__FILE__).”/../include/common.inc.php”);
require_once(DEDEINC.'/channelunit.class.php');
require_once(DEDEINC.'/taglib/arcpagelist.lib.php');
$pnum=empty($pnum)?0:intval(preg_replace(“/[^\d]/”,'',$pnum));
$typeid=empty($typeid)?0:intval(preg_replace(“/[^\d]/”,'',$typeid));
if($typeid==0||$pnum==0)die(“RequestError!”);
if($typeid>0)
{
$titlelen=AttDef($titlelen,30);
$infolen=AttDef($infolen,160);
$imgwidth=AttDef($imgwidth,120);
$imgheight=AttDef($imgheight,120);
$listtype=AttDef($listtype,'all');
$arcid=AttDef($arcid,0);
$channelid=AttDef($channelid,0);
$orderby=AttDef($orderby,'default');
$orderWay=AttDef($order,'desc');
$subday=AttDef($subday,0);
$line=$row;
$artlist='';
//通过页面及总数解析当前页面数据范围
$strnum=($pnum-1)*12;
$limitsql=”LIMIT$strnum,12″;
$innertext='<li[field:globalname=”autoindex”runphp=”yes”]if(@me%3==0)@me=\'class=”mrnone”\';else@me=””;[/field:global]>
<div><ahref=”[field:arcurl/]”title=”[field:title/]”><imgsrc=”[field:litpic/]”width=”278″height=”245″></a></div>
<h3><ahref=”[field:arcurl/]”title=”[field:title/]”>[field:title/]</a></h3>
<p>[field:descriptionfunction=”cn_substr(@me,150)”/]</p>
<spanclass=”more”><ahref=”[field:arcurl/]”>浏览案例</a></span>
</li>';//模板
//处理列表内容项
$query=”SELECTarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,
tp.moresite,tp.siteurl,tp.sitepathFROM`#@__archives`arcLEFTJOIN`#@__arctype`tpONarc.typeid=tp.id
WHEREarc.typeidIN(“.GetSonIds($typeid).”)ORDERBYarc.sortrankdesc$limitsql”;
$dsql->SetQuery($query);
$dsql->Execute('al');
$dtp2=newDedeTagParse();
$dtp2->SetNameSpace('field','[',']');
$dtp2->LoadString($innertext);
$GLOBALS['autoindex']=0;
$ids=array();
for($i=0;$i<12;$i++)
{
for($j=0;$j<1;$j++)
{
if($row=$dsql->GetArray(“al”))
{
$ids[]=$row['id'];
//处理一些特殊字段
$row['info']=$row['infos']=cn_substr($row['description'],$infolen);
$row['id']=$row['id'];
if($row['corank']>0&&$row['arcrank']==0)
{
$row['arcrank']=$row['corank'];
}
$row['filename']=$row['arcurl']=GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
$row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
$row['typeurl']=GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
$row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
if($row['litpic']=='-'||$row['litpic']=='')
{
$row['litpic']=$GLOBALS['cfg_cmspath'].'/images/defaultpic.gif';
}
if(!preg_match(“#^http:\/\/#”,$row['litpic'])&&$GLOBALS['cfg_multi_site']=='Y')
{
$row['litpic']=$GLOBALS['cfg_mainsite'].$row['litpic'];
}
$row['picname']=$row['litpic'];
$row['stime']=GetDateMK($row['pubdate']);
$row['typelink']=”<ahref='”.$row['typeurl'].”'>”.$row['typename'].”</a>”;
$row['image']=”<imgsrc='”.$row['picname'].”'border='0'width='$imgwidth'height='$imgheight'alt='”.preg_replace(“#['><]#”,””,$row['title']).”'>”;
$row['imglink']=”<ahref='”.$row['filename'].”'>”.$row['image'].”</a>”;
$row['fulltitle']=$row['title'];
$row['title']=cn_substr($row['title'],$titlelen);
if($row['color']!='')$row['title']=”<fontcolor='”.$row['color'].”'>”.$row['title'].”</font>”;
if(preg_match('#b#',$row['flag']))$row['title']=”<strong>”.$row['title'].”</strong>”;
//$row['title']=”<b>”.$row['title'].”</b>”;
$row['textlink']=”<ahref='”.$row['filename'].”'>”.$row['title'].”</a>”;
$row['plusurl']=$row['phpurl']=$GLOBALS['cfg_phpurl'];
$row['memberurl']=$GLOBALS['cfg_memberurl'];
$row['templeturl']=$GLOBALS['cfg_templeturl'];
if(is_array($dtp2->CTags))
{
foreach($dtp2->CTagsas$k=>$ctag)
{
if($ctag->GetName()=='array')
{
//传递整个数组,在runphp模式中有特殊作用
$dtp2->Assign($k,$row);
}else{
if(isset($row[$ctag->GetName()]))$dtp2->Assign($k,$row[$ctag->GetName()]);
else$dtp2->Assign($k,'');
}
}
$GLOBALS['autoindex']++;
}
$artlist.=$dtp2->GetResult().”
“;
}//ifhasRow
else{
$artlist.='';
}
}//LoopCol
}//loopline
$dsql->FreeResult(“al”);
}else
{
die(“RequestError!”);
}
AjaxHead();
echo$artlist;
exit();
dedecms数据库,用php调用sql最新文章
这是我之前写的一个类,和你的需求基本一样,你拿去自己改改吧
<?php
$GLOBALS['web_channel_dir']='dir/inc';
//设置系统根路径
define('WEB_ROOT',$GLOBALS['web_channel_dir']? substr(dirname(__FILE__), 0,- strlen($GLOBALS['web_channel_dir'])): dirname(__FILE__).'/');
abstract class BaseDataQuery
{
/*
*构造方法
*/
function __construct($pid,$cid,$xid)
{
if(!file_exists(WEB_ROOT.'data/common.inc.php'))
{
echo”配置错误”;
exit();
}else{
require_once WEB_ROOT.'data/common.inc.php';
}
$this->cfg_dbhost=$cfg_dbhost;
$this->cfg_dbname=$cfg_dbname;
$this->cfg_dbuser=$cfg_dbuser;
$this->cfg_dbpwd=$cfg_dbpwd;
$this->cfg_dbprefix=$cfg_dbprefix;
$this->cfg_db_language=$cfg_db_language;
$this->link=$this->connect();
}
function connect()
{
//global$link,$host,$dbuser,$dbpasswd,$db;
$link= mysql_connect($this->cfg_dbhost,$this->cfg_dbuser,$this->cfg_dbpwd) or
die(“Could not connect:”. mysql_error().””.$sql);
mysql_select_db($this->cfg_dbname);
mysql_query(“SET NAMES UTF8”);//设置数据库的要查询结果的字符集
return$link;
}
function Query($sql)
{
if(!$this->link)
$this->link=$this->connect();
$result= mysql_query($sql,$this->link) or
die(“Could not query:”. mysql_error().””.$sql);
return$result;
}
function getAll($sql)
{
$res=$this->Query($sql);
if($res!== false)
{
$arr= array();
while($row= mysql_fetch_assoc($res))
{
$arr[]=$row;
}
return$arr;
}
else
{
return false;
}
}
function getAll_cache($sql)
{
$res=$this->Query($sql);
if($res!== false)
{
$arr= array();
while($row= mysql_fetch_assoc($res))
{
$arr[]=$row;
}
return$arr;
}
else
{
return false;
}
}
function getOne($sql,$limited= false)
{
if($limited== true)
{
$sql= trim($sql.' LIMIT 1');
}
$res=$this->Query($sql);
if($res!== false)
{
$row= mysql_fetch_row($res);
if($row!== false)
{
return$row[0];
}
else
{
return'';
}
}
else
{
return false;
}
}
/**
*得到子栏目ID
*$reid上线id
*/
function get_child($reid)
{
$child_sql=”SELECT id FROM dede_arctype WHERE reid=”.$reid;
$res=$this->getAll($child_sql);
if(empty($res)){
return$reid;
}
foreach($res AS$row)
{
if(!empty($row['id']))
{
$arr[]=$row['id'];
$this->get_child($row['id']);
}
}
$str= join(“,”,$arr);
return$str;
}
/**
*得到子栏目名称与id
*$reid上级id
*/
function get_child_name($reid)
{
$child_sql=”SELECT id,typename,reid FROM dede_arctype WHERE reid=”.$reid;
$res=$this->getAll($child_sql);
return$res;
}
function get_ic_name($id)
{
$child_sql=”SELECT typename FROM dede_arctype WHERE id=”.$id;
$res=$this->getAll($child_sql);
return$res;
}
/*
*数据查询
*$flag(需要查询的标记例头条[h]推荐[c]幻灯[f]特荐[a]滚动[s]加粗[b]图片[p]跳转[j])
*$typeid需要查询的栏目id(22,23,24,25)
*$len需要查询的数据长度如果$len是数据就是limit 1,100形式如果是字符就是limit 100如果$len不存就是不限止条数
**/
function query_data($queryInfo)
{
$queryInfo['flag']?$flag=$queryInfo['flag']:$flag= false;
$typeid=$queryInfo['typeid'];
$queryInfo['len']?$len=$queryInfo['len']:$len= false;
$field=$queryInfo['field'];
$queryInfo['order']?$order=$queryInfo['order']:$order= false;
$queryInfo['channel']?$channel=$queryInfo['channel']:$channel= false;
$queryInfo['where']?$where=” AND”.$queryInfo['where']:$where=””;
$queryInfo['typeid2']?$typeid2=”AND typeid2 in(“.$queryInfo['typeid2'].”)”:$typeid2=””;
$queryInfo['table']?$table=$queryInfo['table']:$table=”dede_archives”;
//定义查询数据标识(头条,图片,推荐)
if($flag)
{
$flag=”and find_in_set('$flag',flag)”;
}else{
$flag=””;
}
//查询条数
if($len)
{
if(is_array($len))
{
$len=”limit”.$len[0].”,”.$len[1];
}else{
$len=”limit 0,”.$len;
}
}else{
$len=””;
}
//定义排序条件
if(isset($order)&& is_array($order))
{
$orderarr= array();
foreach($order as$key=>$value)
{
$orderarr[]=$key.””.$value;
}
$orderstr= join(“,”,$orderarr);
}
elseif($order=='rand')
{
$orderstr=” rand(),id desc”;
}
elseif($order!='')
{
$orderstr=$order;
}
else
{
$orderstr=”pubdate desc”;
//$orderstr=$order;
}
//定义查询模型
if($channel)
{
$channel=”AND channel=”.$channel;
}elseif($channel==”null”){
$channel=””;
}
else
{
$channel=”AND channel= 1″;
}
//定义查询字段
if($field)
{
if(is_array($field))
{
$field= join(“,”,$field);
}
$sql=”select”.$field.” from”.$table.” WHERE arcrank>-1 and typeid in(“.$typeid.”)”.$typeid2.$flag.””.$channel.”$where ORDER BY”.$orderstr.””.$len;
}else{
//根剧栏目查询新闻
$sql=”select id,title,pubdate from”.$table.” WHERE arcrank>-2 and typeid in(“.$typeid.”)”.$typeid2.$flag.””.$channel.”$where ORDER BY”.$orderstr.””.$len;
//echo”<br/>”;
}
if($queryInfo['debug']){
$debugstr=”this is Debug:[$sql ]”;
return$debugstr;
}
$result=$this->getAll($sql);
return$result;
}
}
dedecms如何去掉首页index.html的方法
dedecms如何去掉首页index.html出现的原因是动态PHP转换为静态html的原因,去除方法如下:
第一种、伪静态设置代码,具体操作如下:
在主机里面找到伪静态文件.htaccess,下载到本地,用编辑器打开,在里面加入以下代码DirectoryIndex index.html index.php index.htm然后在上传至主机。
第二种、在网站虚拟主机里面把网站默认首页index.html放到index.php前面,具体如下图: