PHP MySQL查询从多ID数组获取类别名称
我有分类表PHP MySQL查询从多ID数组获取类别名称,php,mysql,Php,Mysql,我有分类表tb\u分类 categoryid | category_name 1 | New Product 2 | Promo 我有产品表tb\u产品 productid | product_name | categoryid_fk 1 | Watch | 1 2 | Bag | 1,2 现在我想从productid=2中获取类别名称,其中categoryid\u fk=1,2 怎么做 到目
tb\u分类
categoryid | category_name
1 | New Product
2 | Promo
我有产品表tb\u产品
productid | product_name | categoryid_fk
1 | Watch | 1
2 | Bag | 1,2
现在我想从productid
=2中获取类别名称,其中categoryid\u fk
=1,2
怎么做
到目前为止,我的SQL代码:
//category id --> 1,2
$qCategory = mysqli_query($con, "SELECT * FROM tb_category WHERE categoryid IN ('" . $dProduct['categoryid_fk'] . "')");
foreach($qCategory as $cause)
{
echo $cause['category_name'];
}
当我运行查询时,我只获得带有单个
categoryid
的类别名称,并使用find\u in\u set函数。用法:在集合中查找(搜索字符串,字符串列表)。
请参见此处的演示:
编辑:由于需求已更改,请添加替换函数以删除空格,以便在_集中查找_
SELECT tb_category.*
FROM tb_category,tb_product
WHERE find_in_set(categoryid, replace(categoryid_fk,' ','')) > 0
and productid = 2;
Result:
categoryid category_name
1 New Product
2 Promo
您需要将tb_product-table加入到您的query@Bernhard你有一个例子吗?你需要规范化,创建
tb|u prod|u cat
来连接productid
和categoryid
上的这些表,并且将有3行:1
-2 | 1
和2 | 2
。然后加入tb\u产品
tb\u产品猫
tb\u类别
。categoryid\u fk定义为集合还是varchar?请告诉我们tb_产品是如何生产的created@tadman好的。我明白你的话了。(y) 尝试了你的代码,但只显示了1个类别。你复制并粘贴了我的代码吗?它在sqlfiddle中运行良好,结果在我答案的底部。是的,刚刚尝试过。我仍然只有一个类别。你能分享一下你的sqlfiddle吗?我更新了我的答案,把sqlfiddle放进去:刚才试过了,我发现了问题<代码>(2,'Bag','1,2')。当我这样设置时(2,'Bag','1,2')