我有3张桌子
在第一个中,我拥有我的产品,第二个中,我具有产品的ID,并且具有功能的ID,第三个中,我具有的功能可以具有不同的颜色,尺寸,材质... >
我建立了一个具有蓝色,红色,白色,黑色... XL LM S ...大小的筛选器菜单,当用户选择它时,脚本会发送一个AJAX请求以显示产品...表单输入为复选框类型...
问题在于,我每次用户选择某些内容时都会发送一个对象
示例
object = {
"color": [13215, 23154, 21658,...],
"size": [5123, 6574, 9875,...]
}
数组填充有id_features 当我print_r file.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')";
因此,如果我在过滤器中选择了例如“红色”和“ XL”,它会向我显示具有“红色”功能或“ XL”功能的所有产品,而我想要的只是具有“红色”和“ XL”功能...如果某件产品有红色但没有XL,我不希望它们显示!!!
答案 0 :(得分:0)
您要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'] );