簡體   English   中英

根據表單中的用戶輸入,很難更改PHP文檔中的SQL查詢

[英]Difficulty changing SQL query in PHP document based on user input from form


我有一個PHP文檔,該文檔基於搜索表單中的輸入值來查詢MYSQL數據庫。 一切工作正常,但我正努力添加一項新功能,我相信它將使整個應用程序更加用戶友好。

我數據庫中的表格基本上存儲着各種社交俱樂部的信息。 它具有有關其位置,名稱,booking_price,alter_permitted的數據。 我需要幫助的位與alcohol_permitted相關。 在數據庫中,其存儲1或2,2表示允許酒精,1表示不允許。

目前,我的表單如下所示:

<form>
    <label for="alcohol_check">Search clubs where alcohol permitted?</label>
       <input type="radio" id="alcohol_check1" value="1" /><label for="radio1">No</label>
       <input type="radio" id="alcohol_check2" value="2" /><label for="radio2">Yes</label>
       <input type="radio" id="alcohol_check3" value="???" /><label for="radio3">Show both</label>

    <label for="club_name">Enter social club name:</label>
       <input type="text" id="club_name" name="club_name"/>
</form>



我的PHP看起來像這樣:

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input
        AND
        WHERE alcohol_permitted = $user_alcohol_permitted_selection";

現在的問題是,我的查詢將僅檢索提供或不提供酒類的社交俱樂部。 因為此刻從alcohol_permitted表單傳遞的值是1或2。我可以對查詢執行什么操作,以便如果用戶選擇選項“ both”和“ both”,則它檢索提供酒精飲料的社交俱樂部和不提供酒精飲料的俱樂部? 我想不通! 查詢中是否需要if語句?

感謝您對此進行檢查,如果無法很好地解釋這一點,對不起。

這應該工作。

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";

if ($user_alcohol_permitted_selection == "???")
{
     $query.= "AND WHERE alcohol_permitted = 1 OR alcohol_permitted = 2";
} else {
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

此外,如果列alcohol_permitted只包含值1或2。我建議你改變了列類型為bool像therealmitchconnors在他的回答提出。

然后,您可以將條件語句縮減為:

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";    

if ($user_alcohol_permitted_selection != "???")
{
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

請注意!

好的,首先,請將alchohol_permitted列的數據類型更改為bool(MySQL中的bit(1))。 只是讀給我發冷...

現在,關於您的問題。 試試這個where語句:

WHERE $user_alcohol_permitted_selection IS NULL 
OR alcohol_permitted = $user_alcohol_permitted_selection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM