php如何根据数组个数来自增select的like查询语气?
数据库现有字段info,值为:key1/key2/key3...其中key的值和个数都是不确定的,以"/"做分隔符;我使用$infos=explode('/',$info...
数据库现有字段info,值为:key1/key2/key3...其中key的值和个数都是不确定的,以"/"做分隔符;
我使用 $infos=explode('/',$info) 来分割成数组$infos;
循环数组为 $infos as $key;
现在要根据这个数组来执行查询语气:
select * from table where info like %key1% or info like %key2% or info like %key3% ... order by id desc
现在的问题是:我如何判断数组$info的个数,并据此循环查询 or info like %key%呢?
请各位大虾帮忙分析,拜谢! 展开
我使用 $infos=explode('/',$info) 来分割成数组$infos;
循环数组为 $infos as $key;
现在要根据这个数组来执行查询语气:
select * from table where info like %key1% or info like %key2% or info like %key3% ... order by id desc
现在的问题是:我如何判断数组$info的个数,并据此循环查询 or info like %key%呢?
请各位大虾帮忙分析,拜谢! 展开
1个回答
展开全部
count($infos);就能够知道
$infos数组里有几个个数了
在这里不需要判断 遍历的时候有几个遍历几个 可以省去判断
解决方法:
$where = ' 1= 1';
foreach($infos as $key => $val){
if($key){
$where .= 'or like %$key% ';
}
}
$sql = "select * from table where 1=1 and info ".$where." order by id desc"
$infos数组里有几个个数了
在这里不需要判断 遍历的时候有几个遍历几个 可以省去判断
解决方法:
$where = ' 1= 1';
foreach($infos as $key => $val){
if($key){
$where .= 'or like %$key% ';
}
}
$sql = "select * from table where 1=1 and info ".$where." order by id desc"
更多追问追答
追问
这个主意非常不错!
但是$where .= 'or like %$key% ';放入SQL就变成
$sql = "select * from table where 1=1 and info or like %$key1% or like %$key2% order by id desc"
如何正确衔接第一个like和第2个以上的like呢:info like %% or info like %%...
谢谢,给你加分!
追答
遍历的时候就自动加上了
$where = ' 1= 1';
foreach($infos as $key => $val){
if($key){
$where .= ' or like %$key% ';
}
}
在 or 前面加一个空格
你可以试试 最后输出一下SQL 语句 看看是不是你想要的结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询