2013-07-17 50 views
2

有沒有一種方法可以返回一個包含在數組中的ID的SQL表。用PHP提升某些SQL行

因此,數組($ UserFavs)包含45,65,32的值,並且這些涉及到數據庫中名爲id的列,當從表中選擇所有行時,我希望$ UserFavs數組中的所有行都是首先顯示。

我嘗試以下,但沒有奏效:

"SELECT * FROM keeper order by id WHERE `id` IN (' . implode(',', array_map('intval', $UserFavs)) . ')';" 

但這並沒有工作。

這是關鍵,所有的行返回,但在陣列中的行首先出現。

感謝, B.

回答

0

您可以使用它像這樣:

"SELECT * FROM keeper ORDER by CASE WHEN `id` IN (...) THEN 0 ELSE 1 END" 
+0

愛你的工作!謝謝soooo @Andrius – user1250812

+0

很高興我幫助:) –

1

「顯示順序」是不是你應該使用查詢的,因爲這是一個演示文稿的細節。

相反,你可以分別獲取個人記錄,追加到將存儲在「顯示順序」項的數組;然後使用NOT IN從數據庫中過濾其他記錄,並將這些行追加到顯示有序數組中。

由於磁盤陣列的默認FIFO,當你顯示它們將它們添加到陣列的順序遍歷記錄。

+0

感謝@Burhan - 你有一個例子嗎? – user1250812