使用mysql和php查询以返回逗号分隔字符串中的项的完全匹配

bfrts1fy  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(400)

这个问题在这里已经有答案了

mysql查询在逗号分隔的字符串中查找值(11个答案)
11个月前关门了。
我正在努力用php编写一个mysql查询,它可以在逗号分隔的字符串中找到与一个项完全匹配的项。注意,由于各种原因,我无法更改数据模型

Musicians
id|artist
1|beatles
2|rolling stones

$searchterm = "beatles"

很容易将字符串与以下内容精确匹配:

WHERE artist = '$searchterm'

我怎样才能确定一个精确的匹配在下面

Musicians
id|artist
1|beatles,the beatles,the fab four,fab four,fab for
2|rolling stones,the rolling stones,stones,the stones

$searchterm = "fab four"

//something like the following although it does not work

WHERE $searchterm IN artist

谢谢你的建议

xxe27gdn

xxe27gdn1#

你可以用 find_in_set() :

WHERE FIND_IN_SET(:searchterm, artist)

重要提示:
不要将变量串联到查询字符串中,因为这会使代码效率低下,并使您暴露于sql注入中;相反,请使用参数化查询。相关阅读:如何防止php中的sql注入?
在数据库列中存储分隔列表是一种不好的做法;它基本上违背了关系数据库的目的,使简单的事情变得不必要的复杂(正如您开始看到的)。推荐阅读:在数据库列中存储分隔列表真的那么糟糕吗?

相关问题