问答详情
源自:5-6 [PDO] 数据库操作类之条件查询

为何我跟着老师写解析order by,代码一样,但是执行的时候传入$order 却被忽略了呢

/*函数调用部分*/

public static function find($tables,$where=null,$fields='*',$group=null,$hanving=null,$order=null,$limit=null){

$sql = 'select '.self::parseFields($fields).' from '.$tables

.self::parseWhere($where)

.self::parseGRoup($group)

.self::parseHaving($hanving)

.self::parseOrder($order)

.self::parseLimit($limit);

$dataAll = self::getAll($sql);

return count($dataAll)==1?$dataAll[0]:$dataAll;

}

/*解析order by 部分*/

public static function parseOrder($order){

$orderStr = '';

if(is_array($order)){

$orderStr = ' order by '.join(',',$order);

}elseif(is_string($order)&&empty($order)){

$orderStr = ' order by '.$order;

}

return $orderStr;

}

/*执行调用部分*/

$tables = 'cj_setting';

var_dump($PdoMySQL->find($tables,null,'*',null,null,'present desc','4,3'));

老师和各位前辈大哥大姐,能给解惑么,万分感谢,可能是我粗心,但是我真没发现那里错了。。

如果我在limit的参数中添加错误的,就会报错,添加正确的,能正常获取数据,但确确实实,order by部分被忽略掉了。。

提问者:GetElemenTbY_Dc3741964 2018-01-13 18:06

个回答

  • qq_平淡如水_2
    2018-01-19 23:05:51

    elseif(is_string($order)&&empty($order))这里empty前面漏了个感叹号取反吧,应该是!empty($order)