2017-03-29 47 views
-2

我需要幫助。我知道我可以在PHP中使用「if ... elseif」,但問題是當前的情況已經存在於一個很長的「elseif」中,所以我不希望它通過在裏面創建另一個「if ...」來嵌套它。如何執行第二個MySQL條件如果第一個失敗(PHP/MySQLi)

我有我的搜索表單(請參閱下圖)和我的mysqli聲明,只適用於一側(價格)。 我希望能夠:當用戶選擇「Coach」之類的「類別」,並輸入價格(從&到)之一時,搜索必須按預期正常工作。 如果用戶只輸入「價格來源」,則聲明按輸入的金額工作,如果他輸入「價格給」,則聲明也對輸入的金額有效。

我試圖使用許多操作符(OR/AND ...),但仍然沒有達到我想要的。

elseif ($category=="coach"){ 
echo "3 !!!!!!!" ."<br>"; 
$result = $connection->query("select * 
          from tblcoach 
          where price>='$pricefrom' 
          and price<='$priceto'"); 
} 

下面是我的sql語句,只有當我 ,我想

工作image of web form

+0

我想你將不得不在動態變量中構建WHERE子句。顯示上面顯示的代碼 – RiggsFolly

+0

這是代碼:elseif($ category ==「asia」) $ result = $ connection-> query(「select * from tblasia where price> ='$ pricefrom'and price <= '$ priceto'「); elseif($ category ==「australia」) $ result = $ connection-> query(「select * from tblaustralia where price> ='$ pricefrom'and price <='$ priceto'」); elseif($ category ==「coach」){ echo「3 !!!!!!!」 「
」; $ result = $ connection-> query(「select * from tblcoach where price> ='$ pricefrom'and price <='$ priceto' UNION select * from tblcoach where price <='$ priceto'or price> = '$包含pricefrom'「); –

+0

你可以閱讀代碼**在評論**我不能。使用該問題下的[edit](http://stackoverflow.com/posts/43093173/edit)鏈接,以便我們可以閱讀它 – RiggsFolly

回答

0

一種常見的做法是一種「或輸入爲空」的條款添加到您的WHERE條款。從邏輯上講它可能是這個樣子:

select * 
from tblcoach 
where (price >= ? or ? is null) 
    and (price <= ? or ? is null) 

那麼你還是「從價」值和第二兩個參數的「價格」值的前兩個參數的綁定。

提示:這是開始使用查詢參數和準備語句的好時機。它會使這個和其他事情更容易。您可以對您當前的潛在SQL注入代碼做同樣的事情,可能與空字符串或默認值比較,而不是null。但這個想法是一樣的。如果存在的話,邏輯本質上是使用該值進行比較,如果它不存在,則不進行有意義的比較。

+0

感謝David。我寫了這個($ result = $ connection-> query(「select * from tblcoach where price(='$ pricefrom'或'$ pricefrom'爲空) 和(price <='$ priceto'或'$ priceto'爲null)「);)結果是:它只適用於」Price to「。如果我輸入「價格來源」,屏幕上什麼都沒有。我不是爲什麼! –

+0

@ J.Doe:「屏幕上沒有任何東西」是否意味着一個完全空白的頁面?聽起來像有一個PHP錯誤。檢查PHP日誌,打開錯誤報告等。另外,由於您仍在使用字符串連接/插值來構建SQL查詢,因此還需要檢查執行時的* actual *查詢在運行時的狀態。變量名稱告訴我們什麼變量包含什麼。 – David

+0

抱歉不明確。不,如果我輸入「價格來源」,我沒有從查詢語句中得到任何結果。如果我在「price to」輸入一個數字,我只有確切的結果。這不是一個空白頁面,但我沒有得到任何結果。順便說一句,他們的方式我添加的參數是正確的? –

相關問題