表字段的值为1,2,3(逗号分隔的值),变量的值为2,3。现在我需要使用query和另一个name字段检查天气变量值是否在表字段中
用户表
id name cat_id
-----------------
1 test 1,2,3
2 test1 3,4
3 test2 4
变量$value=2,3
查询: select * from user where name='test' and cat_id IN ('".$value."')
但对于上述查询,我得到的数据为零
如何检查cat\ id字段中是否存在给定id,表中是否存在名称
2条答案
按热度按时间up9lanfz1#
您可以使用正则表达式检查值是否包含在cat\u id中:
这将尝试匹配
value
在任何单词边界cat_id
,所以cat_id='1,2,3'
,值(例如)'1,2'
,'2'
,'2,3'
将匹配。以字符串形式表示(例如,对于php):
lf5gs5x22#
你的
cat_id
字段只能包含一个id
按行。您的sql请求当前不起作用是正常的,因为您正在查找cat\ U id
2
或者3
sql找不到的。例如在你的第一排
1,2,3
,对于mysql,它是一个字符串“1,2,3”,而不是三个id的数组。如果一个名字能被几只猫使用,也许它们应该是有一个名字的猫
name_id
.如果一只猫可以有几个名字,一个名字可以有几个猫,你应该创建一个新的表
cats_names
包含一个name_id
还有一个cat_id
按行。