如何使用php数组作为值在mysql表上运行查询
我有一个mysql表,其中包含用户感兴趣的记录。e、 g如何使用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 在上面的例子中,假设我正在搜索对娱乐感兴趣的用户的记录,并且用于查询数据库的值包含数组值。乙二
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功能。非常感谢您的快速回复。。我将尝试一下长期解决方案。再次感谢