2014-07-22 31 views
0

我创建一个查询:警予查询生成器排序默认

<?php 

$conditions = array(); 
$params = array(); 

$ids = explode(',', $_GET['ids']); 

for($i = 0; $i < sizeof($ids); $i++) 
{ 
    $conditions[] = 'ID=:id'.$i; 
    $params[':id'.$i] = $ids[$i]; 
}    

if (!empty($conditions)) $conditions=implode(' OR ', $conditions); 

$query = Yii::app()->db->createCommand() 
       ->select() 
       ->from('ABC') 
       ->where($conditions, $params) 
       ->limit(sizeof($ids)) 
       ->queryAll(); 

print_r($query); 

问题是,默认情况下它的分类结果我的表的主键

我的URL看起来像这样,localhost/view?ids=6,5,1,4

结果排序1,4,5,6我不想那样。有没有办法排序?

回答

0

可以为了始终设置为DESC进行降序排列,否则将被默认

->order('col_name desc') 

也可以用in条件加在那里进行排序,以避免循环创建其中一部分

->where(array('in' , 'col_name' , $id_array)) 
+0

但使用IN子句我如何使用'$ params'来防止mysql注入?因为id的数组取自url – user2636556

+0

建立一个循环,并将每个id转换为'int',如:'$ id_array [] =(int)$ id'来保护你自己 – tinybyte