phpcmsV9原生数据库操作写法

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里面;包括其他操作数据库函数都在这里。

 

fetch_array()方法文件位置

举个例子,看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;
        
    }

https://down.r9g.com/az-1305/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值