2013-11-15 129 views
0

所以我試圖用PHP編寫代碼。我的目標是爲mysql獲取操作編寫一個通用代碼。對於一個實例,我想傳遞表名和值,並將結果以JSON的形式返回,如下所示。從mysql中降序排列

function get($table, $from, $to) { 
    $q = mysqli_query('select * from '.$table.' limit '. $from.', '.$to); 
    // do some more 
    return json_encode($arr); 
} 

上面的代碼會給出結果。如預期。現在我面對的問題是當我希望我的代碼根據我的表的auto_incrment ed列以降序返回值時。我完全停留在這一點上。

我曾經這樣做,當我不想要gereric代碼。

select * from tablename order by auto_inc_col limit 0,10

我與谷歌試圖獲得有關同一些答案。但無法得到它。根據我的經驗,我應該指定列名,我無法使用我正在嘗試編寫的代碼。

現在我的問題是這樣的。是否有可能通過任何mysql查詢動態指定列名稱。如果可能如何?還是應該退出這個通用代碼並開始分別編寫每個表的代碼?請幫我解決這個問題。

+0

auto_inc列始終是定義中的第一列嗎? – Strawberry

+0

@Strawberry是的先生。 – Vinay

+1

ORDER BY 1 DESC - 但請注意,您目前的方法存在安全問題。像這樣的通用的東西通常是要避免的! – Strawberry

回答

1

我不太清楚你在問什麼,但不會有這樣的幫助嗎?

function get($table, $from, $to) { 
    $q = mysqli_query('select * from '.$table.' order by auto_inc_col DESC limit '. $from.', '.$to); 

你甚至可以有變量$ sortCol和$ sortOrder。

+1

這就是我需要的。我只想按降序獲取所有記錄。要獲得該訂單,我需要指定列名稱。但我不能,因爲我沒有選擇動態獲取列名稱。所以我有問題得到有序的輸出。根據@ Strawberry的建議,它可以工作。他再次說「我現在的方法存在安全問題」。今天超載。但是感謝你在帖子中的最後一句話。這可能對我有幫助。 – Vinay