使用過濾器選項按尺寸獲取產品。這是產品數據庫結構: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 表中。

千萬里不及你
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

慕萊塢森
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"
- 3 回答
- 0 關注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消