我的Senario如下,
1)我的数组如下所示,我想在数据库中搜索字段=“state_id”,
$stateIds= array(
[0]=>1,
[1]=>13,
[2]=>18,
[3]=>21,
[4]=>14,
);
在我的db“state_id”字段中存储为==> 1,2,3
我必须显示其state_id存在于$ stateIds数组中的用户
从上面的示例中,用户的state_id与1,2,3
类似,如果我们检入$ stateIds数组,那么在那里存在id“1”,所以从用户应该来的查询开始。
我解雇了下面的查询,
"FIND_IN_SET('".implode(',',$stateIds)."', state_id) OR ";
但它不起作用, 请有人帮我解决一下吗?
答案 0 :(得分:2)
Mysql的FIND_IN_SET
将第一个参数作为单个值以逗号分隔的字符串查找,以便在b
中找到a,b,c,d
SELECT FIND_IN_SET('b','a,b,c,d');
使用FIND_IN_SET
,您无法将逗号分隔的字符串与a,b
中的其他逗号分隔字符串匹配,例如a,b,c,d
,但是对于您的情况,您需要循环数组并将每个值放入{ {1}}类似
FIND_IN_SET
如果foreach($stateIds as $stateId){
$query.= "FIND_IN_SET('".$stateId."', state_id) OR ";
}
是关系字段,我建议您normalize your structure,将关系存储在一个列中不是一个好主意