Mysql where子句(搜索表列匹配)

时间:2016-12-26 06:30:06

标签: php mysql

我有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[] }}?如何解决这个问题?

感谢。

2 个答案:

答案 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"