我有1个表t1
,大约500多个数据行,我只是显示一个示例数据。
数据如下:
+--------+----------+-------------------+
| 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[]
}}?如何解决这个问题?
感谢。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
尝试使用MySQL FIND_IN_SET()
功能
您的查询将是这样的
"SELECT * FROM t1 WHERE FIND_IN_SET($gcategory,category) ORDER BY id DESC"