2016-12-06 46 views
1

我使用两层链接在我的网页选择框来过滤数据......我有我的查询第二选择值的问题...比较逗号分隔值SQL字符串PHP

表:

id  name  cat      loc 

1  ABC  resort      mall road 
2  BCD  banquet hall    mall road 
3  CDE  farm house, banquet hall pakhowal road 
4  DEF  hotel      ferozpur road 
5  FEZ  hotel      fountain chowk 
6  ZEX  resort      mall road 

我有两个选择框,其中第一个是DISTINCT猫值......这是工作完美的我...

查询我现在用的就是:

select distinct cat from 
(select trim(substring_index(substring_index (concat(cat,',,'),',',n),',',-1)) 
as cat from table t 
cross join (select 1 as n union all select 2 union all select 3) r) t 
where cat <> '' ORDER BY cat ASC 

输出:

cat 

banquet hall 
farm house 
hotel 
resort 

现在我想让它选择所有那些我们在第一个框中选择猫一样的价值一样,如果我从第一选择“割肉”,选择它选择“商城路”区域的查询对于第二个箱子......并且如果我选择了“宴会厅”,那么它应该选择“商场路”和“pakhowal路”等等。

我使用了一个查询,这也但它不是为我工作正常...

第二个选择框查询:

SELECT DISTINCT loc 
from table 
WHERE cat = '$_POST[cat]' AND loc IS NOT NULL 

它给出了“度假”和“酒店右输出“只有猫......如果我选择”农舍“或”宴会厅“,它不会取得”pakhowal道路“...

如何改变我的查询来实现这个...?

+0

在一个侧面说明,请不要使用PDO或查询中使用它之前至少净化你的输入。直接插入$ _POST变量一直是不好的做法。 – Merv

回答

2

试试这个:

SELECT DISTINCT loc 
FROM [YourTable] 
WHERE INSTR(CONCAT(', ',cat,' ,'),CONCAT(', ','$_POST[cat]',' ,'))>0 AND loc IS NOT NULL 
+0

抱歉先生...没有为我工作... – Ashish

+0

@Ashish,你有任何错误?如果不是,你可以分享结果和预期结果。 –

+0

秒选择是不是从表中取出任何值... – Ashish