如何使用php数组作为值在mysql表上运行查询

如何使用php数组作为值在mysql表上运行查询,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我有一个mysql表,其中包含用户感兴趣的记录。e、 g id | username | email | interest ------------------------------------------------------------------- 2 | lynx | lynx@exm.com | sports, business, entertainment 在上面的例子中,假设我正在搜索对娱乐感兴趣的用户的记录,并且用于查询数据库的值包含数组值。乙二

我有一个mysql表,其中包含用户感兴趣的记录。e、 g

id  | username |    email     | interest
-------------------------------------------------------------------
2   | lynx     | lynx@exm.com | sports, business, entertainment
在上面的例子中,假设我正在搜索对娱乐感兴趣的用户的记录,并且用于查询数据库的值包含数组值。乙二醇

array('movies', 'games', 'entertainment'); 
有了这个阵列,我应该能够获得lynx唱片,因为他们对娱乐感兴趣。 我尝试过使用MySQL的IN操作符,但没有得到任何结果。我还将字段转换为全文,只是为了使用LIKE运算符,但也没有得到任何结果。

短期解决方案
interest
数据是非规范化的,因此您可以使用来搜索它:

WHERE FIND_IN_SET(@interest, t.interest) > 0
@interest
表示您发布的数组中的单个值。IE:“娱乐”

长期解决方案 表需要重新构造为标准化数据-这意味着使用以下方法将
兴趣
移出
用户
表:

用户兴趣
  • 用户标识(pk,fk到用户。用户标识)
  • 利息id(pk,fk到利息。利息id)
兴趣
  • 兴趣id(主键)
  • 描述
以下是您在这种情况下使用的查询:

SELECT u.*
  FROM USERS u
  JOIN USER_INTERESTS ui ON ui.user_id = u.user_id
  JOIN INTERESTS i ON i.interest_id = ui.interest_id
 WHERE i.description = @interest
要基于多个兴趣进行搜索,请执行以下操作:

SELECT u.*
  FROM USERS u
  JOIN USER_INTERESTS ui ON ui.user_id = u.user_id
  JOIN INTERESTS i ON i.interest_id = ui.interest_id
 WHERE i.description IN (@interest1, @interest2, @interest3)

MySQL全文搜索(FTS)使用
匹配。。。违反
语法<代码>LIKE不是FTS功能。非常感谢您的快速回复。。我将尝试一下长期解决方案。再次感谢