我有一個產品頁面,顯示我的網站上出售的所有產品,側面有鏈接以允許用戶縮小結果,例如通過顏色。所以如果他們點擊「紅色」鏈接,只顯示紅色的產品。該數據庫表的設置,使每種顏色的不是「是」或「否」,那麼在點擊鏈接時,查詢看上去像這樣的值:排序MySQL搜索結果返回後
if(isset($_GET['color'])) {
$color = filter($_GET['color']);
$query = mysql_query("SELECT * FROM products WHERE $color='yes'") or die (mysql_error());
}
後來的後來,我有一個while循環以顯示產品:
<?php
while ($result = mysql_fetch_array($query)) {
...Display product info here...
}
?>
我遇到問題的部分是在返回後對結果進行排序。在頁面上還有其他鏈接可按「價格」和「最新」對返回的結果進行排序。我對如何使用這些排序鏈接的邏輯有困難。
例如,當我點擊「紅色」鏈接後,我只能看到紅色的產品。現在我希望能夠點擊「價格」鏈接,該鏈接應該按照價格僅對紅色產品進行分類。我不知道是否可以在返回後對結果進行排序,或者是否使用附加條件(ORDER BY價格)重新查詢數據庫。如果第二種情況是正確的做法,我該如何將條件附加到先前的查詢並重新查詢數據庫?任何人都可以幫我解決這個問題嗎?我一直在這工作了幾個小時,但沒有運氣!
查詢只是字符串,所以修改查詢應該不那麼困難。你會想使用預先準備好的聲明順便說一句。,或以其他方式使用適當的SQL轉義;你現在擁有的是危險的代碼。 – 2013-05-02 09:16:48
如上所示,我有一個自定義的「過濾器」函數來過濾查詢字符串中的有害輸入。 – 2013-05-02 09:21:04
嗯,好吧,我看到請求值用於列名,這樣準備的語句實際上不會在這種情況下工作。 ..說,你應該仍然可以使用它無論如何= D – 2013-05-02 09:22:58