展开全部
这是我之前写的一个类,和你的需求基本一样,你拿去自己改改吧32313133353236313431303231363533e4b893e5b19e31333264663739
$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 "
";
}
if($queryInfo['debug']){
$debugstr = "this is Debug:[ $sql ]";
return $debugstr;
}
$result=$this->getAll($sql);
return $result;
}
}
追问
哥们!太感谢了!!
我刚才把代码复制到dede根目录上,创建1.php 访问没有数据哦!!具体怎么设置啊??
追答
你自己改也是需要你读一遍代码的。__construct 的时候那三个参数不要,对你没用。
简单的说就是实例化后这类会去找DEDE数据配置信息用connect方法连到数据库上
用query_data方来查你要的数据。里面的参数都有是你查询的基本参数你可以动态设定
如果你连代码都不愿意读一次的话,估计没人帮的了你,除非你让别人来弄不是你自己弄。
本回答由提问者推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起