我有一个带有许多不同标签和类别的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吗?
答案 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,只是不使用%,但我建议你使用相等的运算符(=)