由于%,MYSQL LIKE类别返回错误的查询

时间:2013-07-30 16:17:15

标签: php mysql sql-like

我有一个带有许多不同标签和类别的CMS。我显然将每个类别用作唯一ID并将其保存在数据库中,如下所示:

cats -> 2,15,115
tags -> 13,33,113

这是一个简单的例子。

当我想通过GET变量$ cat显示相关内容时,我遇到了问题:

WHERE cats LIKE '%$cat%' 

这是挑战,如果$ cat ='5',那么它返回,5,15,55,115 ......等等。我只需要它只匹配'5'而不是别的!

我确信我错过了一些非常非常简单的事情。

修改 find_in_set非常有效。但是,我的另一个挑战是我的$ GET变量有时是这样的:$cat = 150,181

那么如何使用变量$ cat来查看是否只有其中一个匹配?我想要对查询匹配150 OR 181吗?

2 个答案:

答案 0 :(得分:2)

您可以使用FIND_IN_SET(),因为列cats具有这些值2,15,115

SELECT * FROM tableName WHERE FIND_IN_SET('5', cats) > 0

答案 1 :(得分:2)

如果你使用带有通配符'%'的LIKE,你可以扩展搜索所有包含'5'的值,并将你的%放在你的基础上。

%value%(comptaining) %值(以值结尾) 值%(以值开头)

你可以使用like as equal,只是不使用%,但我建议你使用相等的运算符(=)