1.phpcms对数据库的操作进行了封装,所有有对数据库操作的.php文件都继承了数据模型基类model.class.php
2.phpcms query查询如何接收返回值
php接收query返回值是用mysql_fetch_array()函数;
但phpcms却不能用,phpcms有专用的方法接收返回值。
代码如下:
方法参数@param $query(mysql_query返回值)
$res=$this->db->query(select * from users);
$data = $this->db->fetch_array($res);
完整的代码如下:
$sql = "select * from v9_news where `status`=99 order by inputtime desc";
$res = $this->db->query($sql);
$data = $this->db->fetch_array($res);
这样可以获取v9_news所以数据。
fetch_array()方法在/phpcms/libs/classes/model.class.php里面;包括其他操作数据库函数都在这里。
举个例子,看PHPCMS框架是流程姿势
1.content_tag类在/phpcms/modules/content/classes/content_tag.class.php
2.this->db = pc_base::load_model('content_model');
数据模型基model.class.php类里有对数据库CRUD的所有操作
同理
this->db = pc_base::load_model('position_data_model');
此工具类有个positions()
/**
* 推荐位
* @param $data
*/
public function position($data) {
$sql = '';
$array = array();
$posid = intval($data['posid']);
$order = $data['order'];
$thumb = (empty($data['thumb']) || intval($data['thumb']) == 0) ? 0 : 1;
$siteid = $GLOBALS['siteid'] ? intval($GLOBALS['siteid']) : 1;
$catid = (empty($data['catid']) || $data['catid'] == 0) ? '' : intval($data['catid']);
if($catid) {
$siteids = getcache('category_content','commons');
if(!$siteids[$catid]) return false;
$siteid = $siteids[$catid];
$this->category = getcache('category_content_'.$siteid,'commons');
}
if($catid && $this->category[$catid]['child']) {
$catids_str = $this->category[$catid]['arrchildid'];
$pos = strpos($catids_str,',')+1;
$catids_str = substr($catids_str, $pos);
$sql = "`catid` IN ($catids_str) AND ";
} elseif($catid && !$this->category[$catid]['child']) {
$sql = "`catid` = '$catid' AND ";
}
if($thumb) $sql .= "`thumb` = '1' AND ";
if(isset($data['where'])) $sql .= $data['where'].' AND ';
if(isset($data['expiration']) && $data['expiration']==1) $sql .= '(`expiration` >= \''.SYS_TIME.'\' OR `expiration` = \'0\' ) AND ';
$sql .= "`posid` = '$posid' AND `siteid` = '".$siteid."'";
$sqls="select a.* from ". SQL_PREFIX."position_data a left join ".SQL_PREFIX."download b on a.id=b.id where ".$sql." and b.status=99 order by ".$order." limit ".$data['limit'];
//var_dump($this->db->query($sqls));die;
$pos_arr = $this->db->fetch_array($this->db->query($sqls)); //原生数据查询结果集获取
//$pos_arr2 = $this->position->select($sql, '*', $data['limit'],$order);
if(!empty($pos_arr)) {
foreach ($pos_arr as $info) {
$key = $info['catid'].'-'.$info['id'];
$array[$key] = string2array($info['data']);
$array[$key]['url'] = go($info['catid'],$info['id']);
$array[$key]['id'] = $info['id'];
$array[$key]['catid'] = $info['catid'];
$array[$key]['listorder'] = $info['listorder'];
}
}
return $array;
}