gpt4 book ai didi

php - 如何根据多个值进行多列选择?

转载 作者:行者123 更新时间:2023-11-29 12:58:22 25 4
gpt4 key购买 nike

我尝试寻找答案,但没有找到任何东西,我不确定我是否以最好的方式描述了这一点,但这里是......

所以,我有一个 MySQL 数据库和一个网站,用户可以选择 0-3 个类别来搜索数据库。

例如,如果我在数据库中有这样的记录:

id|cat1|cat2|cat3
-----------------
1 | a | b | c
2 | a | |
3 | z | b | a
4 | y | a |
5 | b | c | a

我正在尝试找出一种方法,例如,如果用户选择要搜索的 1 个类别并且它是“a”,那么它将返回记录 [1,2,3,4,5],并且如果用户选择 2 个类别进行搜索,例如“a”和“b”,它将返回记录 [1,3,5],并且用户选择了 3 个类别,例如“a”、“c”和“b” ,那么它将返回 [1,5]。

无论是在数据库中还是在用户输入的内容中,都无法保证顺序。

我已经查询到可以选择具有任何输入类别的记录,但我似乎无法弄清楚如何仅返回具有所提供的所有类别的记录。

有人知道怎么做吗?

谢谢!

这是我到目前为止所拥有的,它很困惑,我只是在黑暗中拍摄,哈哈,但它就是这样(在这个例子中,选择了“教堂”和“职业”类别):

SELECT * FROM all_terms 
WHERE
( (subject1 in ('Church', 'Occupation') OR subject1 IS NULL OR subject1 = '')
AND (subject2 in ('Church', 'Occupation') OR subject2 IS NULL OR subject2 = '')
AND (subject3 in ('Church', 'Occupation') OR subject3 IS NULL OR subject3 = '')
AND ( (subject1 IS NOT NULL && subject1 != '')
OR (subject2 IS NOT NULL && subject2 != '')
OR (subject3 IS NOT NULL && subject3 != '')))

最佳答案

您需要的一般查询结构如下:

让用户选择a:

SELECT id
FROM table1
WHERE 'a' IN (cat1, cat2, cat3)

让用户选择a、b:

SELECT id
FROM table1
WHERE 'a' IN (cat1, cat2, cat3)
AND 'b' IN (cat1, cat2, cat3)

让用户选择a、b、c:

SELECT id
FROM table1
WHERE 'a' IN (cat1, cat2, cat3)
AND 'b' IN (cat1, cat2, cat3)
AND 'c' IN (cat1, cat2, cat3)

See this SQL fiddle

您可以使用循环根据用户输入动态生成正确的语句,例如:

给定 $arr 是用户输入的数组:

$sql = 'SELECT id FROM table1 WHERE ';

$and = '';

foreach ($arr as $a) {
$sql .= $and . "'$a' IN (cat1, cat2, cat3) ";
$and = 'AND ';
}

例如,如果$arr = array('a', 'b'),则生成的查询将为:

SELECT id
FROM table1
WHERE 'a' IN (cat1, cat2, cat3)
AND 'b' IN (cat1, cat2, cat3)

See this PHP fiddle

关于php - 如何根据多个值进行多列选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com