2017-03-17 78 views
0

我的網頁上有兩個搜索參數(例如類型和位置)的輸入。當參數輸入時,PHP搜索SQL數據庫並輸出滿足輸入參數的結果。SQL/PHP如果條件不符合,請選擇一切

$sql = " 
SELECT MainID 
    , MainName 
    , MainLocation 
    , MainType 
    FROM Main 
WHERE MainType = 'typeIWant' 
    AND MainLocation = 'LocationIWant' 
"; 

然而,當用戶選擇只有一個參數它應該顯示所有滿足僅所選擇的參數的結果。

喜歡的東西:

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' AND MainLocation = '*' "; 

除了這不起作用。

它應該顯示所有滿足MainType的結果,而不管MainLocation是什麼。

這是如何完成的?

+1

從您的第二個查詢中刪除'AND MainLocation ='*''。 –

+0

但我有一個輸入需要兩個參數,所以如果用戶只是想通過一個參數進行搜索,我會在第二個參數中輸入什麼內容? – mynex

回答

0

您可以使用if statement來檢查,例如:

$sql = " 
SELECT MainID 
    , MainName 
    , MainLocation 
    , MainType 
    FROM Main 
WHERE MainType = 'typeIWant' 
"; 

if (isset($_GET['MainLocation']) && $_GET['MainLocation'] != '') { 
    $sql .= " AND MainLocation = 'LocationIWant'" 
} 
+0

太愚蠢了,我不去想這個!謝謝! – mynex

+0

這並不愚蠢。你只需要練習。 –

+0

編輯:如果其他人想要使用代碼只需在 $ sql。=「AND MainLocation ='LocationIWant'」後添加分號。 – mynex

2

以下行:

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' AND MainLocation = '*' "; 

正在尋找一個叫做MainLocation(或命名爲)*

如果你想搜索只在MainType你應該做的:

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' "; 
+0

我有一個輸入需要兩個參數,所以如果用戶想要使用兩個參數篩選結果,那麼它工作正常,但如果用戶只想通過一個參數進行搜索,我該如何放置第二個參數呢? – mynex

相關問題