我正在尝试根据标签搜索照片表。
我将搜索词拆分为单独的关键字,并在表格中搜索每个单独的关键字,将任何匹配项推送到数组中。
$keywords = explode(' ', $keywords);
$photos = array();
// loop through each keyword
foreach($keywords as $keyword){
$row = $mysqli->query(" SELECT * FROM photos WHERE tags LIKE '%$keyword%' ");
// loop through each row result
while( $query_result = $row->fetch_assoc() ){
// push result to photos array
array_push($photos, $query_result);
}
}
但是,这可能会多次返回同一个表格行,例如,如果我搜索“mod modded”,任何带有“modded”标签的照片都将被推到数组顶部两次,因为它匹配两个关键字。
如何确保只选择一行?
编辑
感谢您的回复,但都没有奏效,我已经实现了我所追求的:
$keywords = explode(' ', $keywords);
$photos = array();
// loop through each keyword
foreach($keywords as $keyword){
$row = $mysqli->query(" SELECT * FROM photos WHERE tags LIKE '%$keyword%' ");
// loop through each row result
while( $query_result = $row->fetch_assoc() ){
$dontPush = false;
// check photos array to see if the query_result already exists
foreach($photos as $photo){
if($photo == $query_result){
$dontPush = true;
}
}
if($dontPush === false){
// push result to photos array if it dodesnt already exist
array_push($photos, $query_result);
}
}
}
但这会产生如此多的循环,如果我有一个大数据库,返回结果肯定需要很长时间?有没有更好的办法