为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql使用php按大小获取产品

Mysql使用php按大小获取产品

PHP
慕神8447489 2022-10-28 09:55:25
使用过滤器选项按尺寸获取产品。这是产品数据库结构:id | size------------ 1 | S,M 2 | S,M,L 3 | S 4 | M,L这是 Shirtsize 数据库结构:id | size------------ 1 | S 2 | M 3 | L这是过滤器的输入值获取代码<div class="list-group">  <h3>Size</h3>    <?php       $query = "SELECT DISTINCT(shirtsize) FROM shirtsize ORDER BY id DESC";       $statement = $connect->prepare($query);       $statement->execute();       $result = $statement->fetchAll();       foreach($result as $row)       {        ?>       <div class="list-group-item checkbox">        <label>          <input type="checkbox" class="common_selector size" value="<?php echo $row['shirtsize']; ?>">            <?php echo $row['shirtsize']; ?>        </label>       </div>    <?php      }     ?>  </div>此代码从数据库中获取值:if(isset($_POST["size"])){    $size_filter = implode("','", $_POST["size"]);    if (is_array($size_filter))    {        foreach ($size_filter as $value)        {           $query .= "AND size like('%".$value."%')";        }    }    else{    $query .= "AND size like('%".$size_filter."%')";    }}在这里我有像 s,m,l 这样的数据库,并且发布数据也像这样.
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

直接从 MySQL 处理您当前的数据模型可能需要一些 SQL olympics。相反,我将提供一个更好的规范化数据结构:

id | size
------------
 1 | S
 1 | M
 2 | S
 2 | M
 2 | L
 3 | S
 4 | M
 4 | L

现在,如果您想获得不同的尺寸,您只需要:

SELECT DISTINCT(size) FROM shirtsize;

如果您想获得每个尺寸的计数id,只需使用:

SELECT id, COUNT(*) AS cnt FROM shirtsize GROUP BY id;

通常,切勿将 CSV 数据存储在 SQL 表中。


查看完整回答
反对 回复 2022-10-28
?
千万里不及你

TA贡献1784条经验 获得超9个赞

首先,我加倍@Tim Biegeleisen 建议您规范化您的数据。
但是,您可以通过使用 FIND_IN_SET() 函数而不是 LIKE 来实现结果。

SELECT *
 FROM `shirtsize` 
WHERE FIND_IN_SET('S', `size`)

该函数返回字符串在字符串列表中从 1 开始的位置。如果未找到字符串,则为 NULL。

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set


查看完整回答
反对 回复 2022-10-28
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

谢谢各位 我有答案了

SELECT * FROM products WHERE status = '1' AND size like('%L%') OR size like('%M%')

或者

SELECT size from `products` WHERE size rlike "L|M"


查看完整回答
反对 回复 2022-10-28
  • 3 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号