php - 使用 SELECT MYSQL 查询在数据库中搜索逗号分隔值

标签 php mysql filter

我在从数据库中获取结果时遇到问题。我有一个名为“Regions”的列,它作为一个值包含用户通过带有逗号的时事通讯注册表单选择的所有区域,即“中东,欧洲”

我正在创建一个过滤器,它需要获取注册特定或多个区域的所有用户列表。用户可以选择多个区域。我从前端以“全局、中东”这种格式获取所有选定区域,我需要在我的 SQL 查询中使用它来查找将全局和中东作为选定区域的所有用户。

我尝试使用 FIND_IN_SET 但它并没有真正帮助。尝试了以下

 $trimmedRegions = rtrim($sortType,', ');

 $query = "SELECT * FROM health_alerts_subscribers
            WHERE FIND_IN_SET(Regions, $trimmedRegions)";

请问我如何才能达到所需的结果?

最佳答案

我推荐 user3783243 所说的内容。我会选择 FIND_IN_SET。这是一个例子。

SELECT {columns} FROM {table} WHERE FIND_IN_SET({item_to_search}, {comma-delimited column})

更好的方法是创建一个 regions 表并添加您的区域,然后创建一个名为 regionsRelated 的相关表(示例),然后从区域和链接表中添加一个 id(如多对多)

Table structure example

Table region
id,region
1, Middle East
2, Global

Table user
id,name
1, John
2, Jan

Table userRegion
userId,regionId
1,1
2,1

SELECT user.id,user.name,region.region from user
left join userRegion ON region.userId=user.id
left  join region
where region.region in('Middle East','Global');

在您的下拉列表中,只需选择所有区域,当用户选择他们想要的区域时,您将使用 INSERT INTO userRegion (userid,regionId) ( 1,2); 等等。

关于php - 使用 SELECT MYSQL 查询在数据库中搜索逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54829787/

相关文章:

php - 如何从 AJAX 请求返回结果

php - 查找特定行之间表列的总和

php - 如何在用户墙上发帖

R根据应用于多列的多个部分字符串过滤行

list - Haskell 中的函数 snd 如何在过滤器中工作

Javascript - 在除 2 以外的所有页面上禁用空格

php - Javascript 到 PHP domain.charCodeAt(i)

针对 SQL 注入(inject)的 PHP 安全登录身份验证

mysql - 如何有条件地连接并从连接表中获取数据?

javascript - 使用过滤器和拼接删除数组中的对象哪一种是 JavaScript 中最好的方法?