[英]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.