Php 选择like,但作为分隔符之间的整个字符串

Php 选择like,但作为分隔符之间的整个字符串,php,mysql,Php,Mysql,列标记: sky***earth***moon sun***animals***iron silver***gold***night ***-是不同标记的分隔符 我想按字符串anima $sql = "select * from images where tags like '%anima%'"; 结果是animals,但我只需要anima作为整个字符串,由***分隔 在上面的例子中,结果应该是零 有什么帮助吗?使用REGEXP并搜索被单词边界包围的anima: SELECT * F

标记

sky***earth***moon  
sun***animals***iron  
silver***gold***night
***
-是不同标记的分隔符

我想按字符串
anima

$sql = "select * from images where tags like '%anima%'";
结果是
animals
,但我只需要
anima
作为整个字符串,由
***
分隔

在上面的例子中,结果应该是零


有什么帮助吗?

使用
REGEXP
并搜索被单词边界包围的
anima

SELECT *
FROM images
WHERE tags REGEXP '[[:<:]]anima[[:>:]]';
选择*
从图像
其中标记REGEXP'[[::]]';
按照下面的链接进行演示,演示逻辑是正确的

从:

REGEXP和RLIKE是REGEXP_LIKE()的同义词


因此,我们也可以使用
RLIKE
而不是
REGEXP

,您也可以使用下面的方法

SELECT * FROM `test_user` WHERE name RLIKE "[[:<:]]anima[[:>:]]"
从'test_user'中选择*,其中name RLIKE“[[::]]”

使用Tim Biegeleisen answer,只是为了演示如何在php中添加。请记住,您应该使用参数化查询,而本例中没有

$query = "SELECT *
FROM images
WHERE tags REGEXP '[[:<:]]{$_POST['abc']}[[:>:]]'";
$query=“选择*
从图像
其中标记为REGEXP'[[::]]'”;

你能用
$\u POST['abc']
而不是
anima
来写你的regexp吗?我不能,因为我的PHP很弱,我不知道你在用哪个PHP框架。但上面的查询可能就是解决这个问题的方法。现在我将添加一个演示。没有任何框架,
$\u POST
是php中的一个常见变量。我的
regexp
很弱,我会尝试的,无论如何,非常感谢。玩一下这个演示,直到你觉得使用它足够舒服。只是为了说明如何添加帖子的价值。参数化查询是另一个主题。