-1
我的數據庫中有以下字段,它採取0或1來表示真或假的陳述功能是否可用:選擇框爲特徵
feature1
feature2
feature3
feature4
所有這些對應於一個可用的複選框在我的PHP頁面中,可以選擇一個功能。
每個元素看起來像這樣:
<input type="checkbox" name="feature1" value="1">
然後我設置爲可變的,並且如果該複選框被不選中,將變量爲0:
$feature1 = $_POST['feature1'];
if ($feature1 != '1'){$feature1 = 0;}
有比預訂系統更多的選擇(例如玩家人數,日期等)。如果未選擇某項功能,則應顯示與其他條件匹配的所有字段,以及包含該功能且不可用的所有內容。因此,在某種程度上,與此類似:
if ($feature1 = 1){
[SHOW ONLY SPORTS WHERE FEATURE1 IS TRUE AND OTHER CRITERIA IS TRUE]
}
else {
[SHOW ALL SPORTS WHERE OTHER CRITERIA IS TRUE, FEATURE1 BEING TRUE OR FALSE DOES NOT MATTER]
}
這裏是我的數據庫查詢(忽略mysql_ * - 我理解的風險,但它不是有關在這種情況下,請不要慶典)。
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type' AND feature1='$feature1'");
這是正常時,用戶不希望特徵1,但如果他們不介意特徵1是真還是假的(因爲它是一個額外的選項),這將只顯示其中特徵1是假的。它應顯示feature1爲true或false的所有內容。
很顯然,我能做到這一點是:
if ($feature1 == 1){
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type' AND feature1='$feature1'");}
else {
$test = mysql_query("SELECT * FROM sport WHERE players = '$players' AND room_type='$rm_type'");}
然而,隨着多個獨立的功能,它會花費大量的if語句,有很多可能的MySQL查詢。
有什麼辦法可以解決這個問題嗎?例如,用戶選擇他們想要特徵2和特徵4,它應該顯示特徵2和4爲真的所有結果,而特徵1和3爲真或假。
希望這是有道理的。任何指向技術,可以在這裏幫助將非常讚賞。
即與此有關,風險不僅'mysql_ *'庫,風險就是你直接使用的查詢變量,而事實使用任何衛生處理,並且也可能發生在PDO和MySQLi上,因此請確保使用[**'mysql_real_escape_string' **]清理數據(http://www.php.net/manual/en/function.mysql-real-escape -string.php)或根據正在使用的庫準備好的語句! – Prix