【发布时间】:2016-12-10 14:38:23
【问题描述】:
首先我知道有很多关于“如何在 MySql 数据库中存储数组?”的帖子。是的,我经历了其中的大部分,这些解决方案似乎只是创建单独的表并将它们连接起来。我认为情况并非如此。至少我什么都想不出来。
好的,所以我有以下表格:
- 产品: |id|name|link|color_list|size_list|cloth_type|
- size_indicators |id|名称|链接|
- color_indicator |id|名称|链接|
- cloth_indicator |id|名称|链接|
我想做什么: 在产品页面上,我有一个带有布料类型、颜色、尺寸的过滤器。 这些是复选框。
我希望能够选中这些框并按“过滤器”按钮或任何其他按钮来过滤查询。 我没有发布已经存在的查询,因为它们正在与其他有关其他功能的表加入。
我在想也许有可能有这样的东西:
size_indicators 表有字符串/数组:1,4,3(其他表类似)所以数组为$size_array([0] => 1, [1] => 4, [2] => 3),查询如下:
$stmt = $pdo->prepare("SELECT products.p_id, products.name, products.size_list, FROM products WHERE size_list = $size_array;
我知道这个查询不起作用,如果我能以某种方式将数组放入 size_list 列上的产品表中,然后将其与所选大小的数组进行比较,这只是一个想法。
帮助我大致了解我应该如何为一个列表(size_list)执行此操作,其余的我会做。我一直在寻找这个,但真的找不到任何有用的东西。另外,我做错了一切,有人有其他想法我应该如何构建我的表格并做到这一点。
【问题讨论】:
-
"..solution 似乎只是创建单独的表并加入它们" 这是正确的。了解规范化。
-
如果您不进行规范化,那么您的系统就不可能超越某些自制项目。尝试您提出的建议的原因是零,而您在网上找不到任何帮助的原因是因为没有人会写一篇提倡这种糟糕做法的博客。
-
那么 MonkeyZeus,你有什么建议如何规范我的数据库吗?因为我需要的是尺寸、颜色、类型的动态数量。对于每个产品。
-
Junction Tables 的无耻插件。如果你不这样做,我就不想站在你的立场上。