2015-12-20 25 views
1

我有MySQL的列Sizes它包含了每一行數據看這樣行查找:PHP/MySQL的 - 當有確切occurence

6 (39), 7 (40.5), 10 (44), 11 (45), 11½ (45.5), 12 (46) 
6 (39), 7, 7 (40.5), 8 (42), 8½ (42.5), 9 (43), 10 (44.5), 11 (46) 
6 (39), 7, 7 (40.5), 8 (42), 8½ (42.5), 9 (43), 11 (46) 

我想從MySQL只行選擇包含specificly這7,

所以,如果我只有三個與MySQL的選擇數據行,我有,因爲他們有7,這是7 (45),

這裏不同的只得到了最後兩行是我試過到目前爲止,但不知何故,它是不工作:

$Size = "7"; 
$Sizes = "$Size,"; 
$CategoryFilter = $_POST['CategoryFilter']; 

$r = mysql_query("SELECT * FROM `products` WHERE `Category`='$CategoryFilter' AND `Sizes` LIKE '%$Sizes%'"); 
$SDProductCode = array(); 
$Number = 0; 
while($rowi = mysql_fetch_array($r)) 
     { 
     $SDProductCode[] = $rowi['ProductCode']; 
     $result['productcode'][] = $rowi['ProductCode']; 
     $Number++; 
     } 

爲什麼我的選擇不起作用,你能幫我嗎?

在此先感謝!

+0

正常化數據,解決問題 –

+0

也許有趣,如果你想'正常化'的表,然後[加入';'一列中的分隔值](http://stackoverflow.com/a/33806675/3184785) –

回答

0

具有以逗號空格,但仍,有位操作的,find_in_set應該做的伎倆:

SELECT * 
FROM `products` 
WHERE `Category` = '$CategoryFilter' AND 
     FIND_IN_SET(REPLACE('$Sizes', ' ', ''), REPLACE(`Sizes`, ' ', '')) > 0 

注: 這應該如果你正在尋找'7'工作,而不是'7'。我猜測使用逗號首先有一個解決方法,所以這可能是可以接受的。