2016-11-29 87 views
0

我試圖讓基於多個複選框的查詢。(對於exapmle的電子商店)如何讓基於多個複選框MySQL查詢

複選框

  <div id="car">  
      <label><input type="checkbox" value="red" >red</label> 
      <label><input type="checkbox" value="black" >black</label> 
      <label><input type="checkbox" value="blue" >blue</label>   
      </div> 


     <div id="brand"> 
      <label><input type="checkbox" value="mazda" >mazda</label> 
      <label><input type="checkbox" value="bmw" >bmw</label> 

     </div> 

查詢

$brand = $_POST['brand']; 
$color = $_POST['color']; 

$Query = "SELECT * FROM items WHERE brand IN ('" . implode("','", $brand) . "') and color IN ('" . implode("','", $color) . "')"; 


$QueryResult = mysqli_query($connection , $Query); 


while($QueryRow = mysqli_fetch_assoc($QueryResult)){ 
?> 
<div><p><?php echo $QueryRow['cost'];?></p></div> 
<div><img src="<?php echo $QueryRow['img']; ?>"></div> 
<?php 
} 
} 
    ?> 

此外,我有js腳本傳遞數組與值從複選框,但它不涉及到問題,這就是爲什麼我不發佈腳本。

問題:

如何避免錯誤如果顏色複選框尚未檢查?

任何想法?

+0

您是否在物品表中添加了顏色列? –

+1

Implode with quotes'「SELECT * FROM items where brand IN(''。'implode('','」,$ brand)。'')「;' – AbraCadaver

+0

」顏色未檢查錯誤「是POST變量不有一個關鍵的顏色?回答這兩個問題,以便我可以做出更簡潔的答案。 –

回答

0
"SELECT * FROM items WHERE brand IN ('" . implode("','", $brand) . "') and color IN ('" . implode("','", $color) . "')"; 
+0

這很好,但如果沒有選擇COLOR複選框,那麼它會給出錯誤 – pavel

+0

我沒有足夠的聲譽,所以只有我發佈答案 –