我想實現多選複選框價格過濾器,目前我有4個複選框:MySQL查詢與多個參數不工作
1.free
2.$0-$30
3.$30-$100
4.$100+
我的PHP代碼。
<input type="checkbox" name = "price[]" <[email protected]$price_check?> class="filters" value="free">Free</label>
<input type="checkbox" name = "price[]" <[email protected]$price_check?> class="filters" value="affordable-price">0 - 30$
<input type="checkbox" name = "price[]" <[email protected]$price_check?> class="filters" value="medium-price">30-100$</label>
<input type="checkbox" name = "price[]" <[email protected]$price_check?> class="filters" value="high-price">100$+</label>
if(isset($_GET['price']) && $_GET['price']!="")
{
$query = "SELECT c.course_id,c.course_title,c.course_url,c.course_thumbnail_url,p.course_provider_name,c.course_category,p.course_provider_icon,c.course_rating,c.course_price from course_catalog_table c inner join course_providers_table p on c.course_provider_id = p.course_provider_id ";
if(in_array('free',$_GET['price']))
{
$query .= "AND c.course_price = 0 ";
}
if(in_array('affordable-price', $_GET['price']))
{
$query .= "AND c.course_price between 0 and 30 ";
}
if(in_array('medium-price', $_GET['price']))
{
$query .= "AND c.course_price between 30 and 100 ";
}
if(in_array('high-price', $_GET['price']))
{
$query .= "AND c.course_price > 100 ";
}
}
主要問題: 我的查詢工作只有一個複選框,如果用戶選擇多於一個複選框,查詢不返回任何結果,我想打印查詢,並在phpMyAdmin,且行執行被返回,所以現在我知道我的查詢存在問題,但無法找出哪部分引發錯誤。
下面是MySQL數據庫查詢時所選擇的所有複選框:
SELECT
c.course_id,
c.course_title,
c.course_url,
c.course_thumbnail_url,
p.course_provider_name,
c.course_category,
p.course_provider_icon,
c.course_rating,
c.course_price
FROM
course_catalog_table c
INNER JOIN
course_providers_table p ON c.course_provider_id = p.course_provider_id
AND c.course_price = 0
AND c.course_price BETWEEN 0 AND 30
AND c.course_price BETWEEN 30 AND 100
AND c.course_price > 100
你是對的或條件現在正在工作我無法進行新的查詢,假設我的查詢是'query = select part'現在我想在選中的複選框的基礎上附加或代碼,如果所有複選框都選中,查詢將像'和(c.course_price = 0或(c.course_price在0和30之間)或(c.course_price在30和100之間)或(c.course_price> 100))''但我應該如何將它們分別追加到根據選定的複選框進行查詢 – parvez