簡體   English   中英

PHP SQL 使用復雜復選框過濾器獲取值

[英]PHP SQL get values with complex checkbox filter

我有 3 張桌子

  1. 產品
  2. 產品特點
  3. 特征

在第一個我有我的產品,第二個我有產品的 id 和功能的 id,第三個我有可以不同的功能 colors,尺寸,材料......

我建立了一個過濾器菜單,顏色為藍色、紅色、白色、黑色......尺寸 XL LM S...... 當用戶選擇它時,腳本會發送一個 AJAX 請求來顯示產品......表單輸入是復選框類型。 ..

問題是我發送了一個 object ,每次用戶選擇某些東西時都會填寫

例子

object = {
"color": [13215, 23154, 21658,...],
"size": [5123, 6574, 9875,...]
}

arrays 充滿了 id_features 當我 print_r 文件上的數據時。php 它向我展示了我想要的東西。

所以我的問題是在 SQL 查詢,我有類似的東西

$features = implode("','", $ajaxArray['feature']); //ajaxArray is the object sent by JS
$query = "SELECT id_product FROM product_feature WHERE id_feature IN ('$features')";

因此,如果我在過濾器中選擇例如“red”和“XL”,它會向我顯示每個具有“red”功能或“XL”功能的產品,而我想要的只是具有“red”和“XL”功能的產品... 如果一個產品有紅色但沒有 XL,我不希望他們展示!!!

您要求 Mysql 做的是

SELECT id_product FROM product_feature WHERE id_feature IN ('XL', 'red')

所以,它正在做你要求它做的事情,“IN”子句是一個隱含的“OR”

你需要一個更復雜的查詢,有幾種方法可以做到這一點,但這里有一個問答方式

$sql = "SELECT id_product FROM product_feature 
  WHERE id_feature IN ('$features')
  group by id_product having count() = " . sizeof( $ajaxArray['feature'] );

暫無
暫無

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

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