2016-12-26 88 views
1

我有1个表,t1,大约有500多个数据行,我只是展示了一个示例数据。Mysql where子句(搜索表列匹配的地方)

数据如下:

+--------+----------+-------------------+ 
| id  | Name  | category   | 
+--------+----------+-------------------+ 
| 1  | ABC  | 6,9,25,27   | 
+---------------------------------------+ 

我的MySQL查询象下面这样:

$gcategory = intval($_GET['cat']); 
$test = DB::fetch_all("SELECT * FROM t1 WHERE category like '%$gcategory%' ORDER BY id DESC"); 
foreach($test as $te){ 
    $list[] = $te; 
} 

但如果$gcategory = '7';ABC也会出现在我的$list[],但我只想当$gcategory = '6' || $gcategory = '9' || $gcategory = '25' || $gcategory = '27'然后ABC只出现在我的$list[]?如何解决这个问题?

谢谢。

回答

4

请尝试使用下面的方法,你应该使用当你从,价值分隔的列表中找到FIND_IN_SET PHP函数:

$gcategory = intval($_GET['cat']); 
$test = DB::fetch_all("SELECT * FROM t1 WHERE FIND_IN_SET("'.$gcategory.'", category) ORDER BY id DESC"); 
foreach($test as $te){ 
    $list[] = $te; 
} 
0

尝试使用MySQL FIND_IN_SET()功能

您的查询会是这样

"SELECT * FROM t1 WHERE FIND_IN_SET($gcategory,category) ORDER BY id DESC"