2014-07-22 32 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