帮忙看下这个涵数控制排序的是哪几个语句?
public function getList($items) {
$orderby    = empty($items['orderby']) ?' ORDER BY v.avatarflag DESC': $items['orderby'];
$pagesize   = empty($items['pagesize']) ?intval(parent::$cfg['userpagesize']) : intval($items['pagesize']);
$where      = " WHERE s.flag='1' AND s.lovestatus='1'".$items['searchsql'];
$start      = ($items['page']-1)*$pagesize;
$countwhere = empty($items['countwhere']) ?'': ' '.$items['countwhere'];
$countsql = "SELECT COUNT(*) AS my_count FROM ".DB_PREFIX."user_params as ps".
" WHERE ps.flag='1' AND ps.lovestatus='1'".$countwhere ;
$total = parent::$obj->fetch_count($countsql);
if ($total == 0) {
$data = null;
}
else {
$params_sql =  $this->_buildParamsSql()." WHERE ps.flag='1' AND ps.lovestatus='1'"
.$countwhere." ORDER BY ps.userid DESC LIMIT ".$start.", ".$pagesize."";
$users = parent::$obj->getall($params_sql);
$ids = $this->_getUserIds($users);
$sql = $this->_buildSql()." WHERE v.userid IN (".$ids.") ORDER BY v.userid DESC";
$data = parent::$obj->getall($sql);
}
return array($total,$this->_handleList($data,'userid'));
}

解决方案 »

  1.   

    奇怪的写法!
    本来 $orderby    = empty($items['orderby']) ?' ORDER BY v.avatarflag DESC': $items['orderby']; 是用于构造排序子句的,但后面并没有使用
    而是硬写上去
    $sql = $this->_buildSql()." WHERE v.userid IN (".$ids.") ORDER BY v.userid DESC";
      

  2.   

    $orderby    = empty($items['orderby']) ?' ORDER BY v.avatarflag DESC': $items['orderby'];
    这个是你的排序 Order by  ,不过后面貌似没有用到(只是当前你贴出来的代码)$params_sql =  $this->_buildParamsSql()." WHERE ps.flag='1' AND ps.lovestatus='1'"
    .$countwhere." ORDER BY ps.userid DESC LIMIT ".$start.", ".$pagesize."";
    这里面的order by ps.userid DESC是你的排序
      

  3.   

    版主,三楼回答的$params_sql =  $this->_buildParamsSql()." WHERE ps.flag='1' AND ps.lovestatus='1'"
    .$countwhere." ORDER BY ps.userid DESC LIMIT ".$start.", ".$pagesize."";
    这句有没有控制结果排序?
      

  4.   

     ORDER BY 子句就是排序
      

  5.   

    确实如此,下面这个涵数我感觉和上面那个差不多,而下面这个第一行的$orderby语句却起了作用,这两个涵数有什么区别吗?
    public function getLikeList($items) {
    $orderby    = empty($items['orderby']) ?' ORDER BY v.userid DESC': $items['orderby'];
    $pagesize   = empty($items['pagesize']) ?30 : intval($items['pagesize']);
    $start      = ($items['page']-1)*$pagesize;
    $where      = empty($items['searchsql']) ?'': ' '.$items['searchsql'];
    $countsql   = "SELECT COUNT(*) AS my_count FROM ".DB_PREFIX."user as v".
    " WHERE 1=1".$where;
    $total = parent::$obj->fetch_count($countsql);
    if ($total == 0) {
    $data = null;
    }
    else {
    $like_sql =  $this->_buildLikeSql()." WHERE 1=1"
    .$where.$orderby." LIMIT ".$start.", ".$pagesize."";
    $users = parent::$obj->getall($like_sql);
    $ids = $this->_getUserIds($users);
    $sql = $this->_buildSql()." WHERE v.userid IN (".$ids.") ORDER BY v.userid DESC";
    $data = parent::$obj->getall($sql);
    }
    return array($total,$this->_handleList($data,'userid'));
    }
      

  6.   

    第一个涵数要修改成和上面那个涵数那样第一行的$orderby语句却起作用,应该怎样修改呢?