$serach=array('abc','def','ghi');
$num=count($search);
for($n=0, $n<$num, $n++){
$sql .= LIKE % $search[$n] % OR ;
}
$sql=substr_replace($sql,"",-3);//REMOVE LAST OR
SELECT * FROM store_main WHERE name :sql...
我需要将一个数组传递给查询LIKE,我已经使用循环来创建语句并放入查询,我的问题是,有没有循环的任何方式,所以我可以使我的查询更简单。
答案 0 :(得分:1)
像这样使用implode:
$serach = array('abc', 'def', 'ghi');
$sql .= "`name` LIKE '%" . implode("%' OR `name` LIKE '%", $serach) . "%' ";
产生
`name` LIKE '%abc%' OR `name` LIKE '%def%' OR `name` LIKE '%ghi%'
或者您可以使用REGEXP。根据您拥有的阵列元素数量和/或表/数据库的效率,这个可能会慢一些。
$serach = array('abc', 'def', 'ghi');
$sql .= "`name` REGEXP '" . implode("|" $serach) . "' ";
产生
`name` REGEXP 'abc|def|ghi'
答案 1 :(得分:1)
尝试
$array = array('lastname', 'email', 'phone');
echo "%".str_replace(",","% OR %",implode(",", $array))."%";
<强>输出强>
%lastname%OR%email%OR%phone%
参考 implode和 str-replace