2 或 3 个类别搜索复选框 php
2 or 3 Categorys search checkbox php
每篇文章可以有无限的类别。
类别是这样保存在数据库中的
示例 article_category: '1','3','8'
要么
示例 article_category: '2','3'
因此,当我在下面搜索列表时,假设类别 3
$category_id = '1,3';
$SQL = "SELECT * FROM ARTICLES WHERE article_category = '$category_id'";
如果只是一个,上面的方法就可以了。
我不想这么说,但我完全迷路了。我会使用 IN
吗?
你可以这样写
$SQL = "SELECT * FROM ARTICLES WHERE article_category IN (".$category_id.")";
您可以这样使用 FIND_IN_SET()
:
SELECT *
FROM ARTICLES
WHERE FIND_IN_SET($category_id, article_category) > 0
使用find_in_set()
;
$SQL= "SELECT * FROM ARTICLES WHERE FIND_IN_SET(1,article_category)>0";
如果我理解你的问题,那么你想一次查询不同的类别。
如果我是正确的,那么您必须在数组或不同变量中获取类别类型,然后在 where 子句中使用或比较它们中的每一个。
比如:其中 article_category='$x1' 或 article_category='$x2' 或...等等。
每篇文章可以有无限的类别。
类别是这样保存在数据库中的
示例 article_category: '1','3','8'
要么
示例 article_category: '2','3'
因此,当我在下面搜索列表时,假设类别 3
$category_id = '1,3';
$SQL = "SELECT * FROM ARTICLES WHERE article_category = '$category_id'";
如果只是一个,上面的方法就可以了。
我不想这么说,但我完全迷路了。我会使用 IN
吗?
你可以这样写
$SQL = "SELECT * FROM ARTICLES WHERE article_category IN (".$category_id.")";
您可以这样使用 FIND_IN_SET()
:
SELECT *
FROM ARTICLES
WHERE FIND_IN_SET($category_id, article_category) > 0
使用find_in_set()
;
$SQL= "SELECT * FROM ARTICLES WHERE FIND_IN_SET(1,article_category)>0";
如果我理解你的问题,那么你想一次查询不同的类别。
如果我是正确的,那么您必须在数组或不同变量中获取类别类型,然后在 where 子句中使用或比较它们中的每一个。 比如:其中 article_category='$x1' 或 article_category='$x2' 或...等等。