Я хочу создать поисковую систему, с помощью которой любой может искать услугу в месте и получать результат, например, кто-то вводит «рестораны @LA», результат показывает весь ресторан в Лос-Анджелесе.Поиск MySQL с несколькими значениями и несколькими таблицами
У меня есть два стола, на которых указано название ресторана, а другое - место, где они связаны с идентификатором. В моем SQL я использую LEFT JOIN
, но мне действительно трудно написать SQL-запрос для решения этой проблемы.
public function sec($searchwords){
$searchwords=trim($searchwords);
$searchwords=preg_split('/[\s]+/',$searchwords);
//after removing whitespaces covert d array back to string
$searchwordz=false;
foreach($searchwords as $searchword){
$searchwordz .= $searchword;
}
//separate d strings from location
$location=false;
preg_match("/@[a-zA-Z0-9]+/", $searchwordz, $matches);
foreach($matches as $values){
$location.=substr($values, 1);
}
//remove location from the rest of the string
$keywords=preg_replace("/@[a-zA-Z0-9]+/",'',$searchwords);
$returned_result=array();
$where="";
$where1="";
$total_keywords=count($keywords);
foreach($keywords as $key =>$keyword){
$where.="place.place_name LIKE :place_name AND location.state LIKE :state";
$where1.="place.description LIKE :description AND location.state LIKE :state";
if($key != ($total_keywords - 1)){
$where.=" AND ";
$where1.=" AND ";
}
}
//echo $where;
$sbl=$dabase->prepare("SELECT place.place_name, place.description, location.location FROM place LEFT JOIN location ON place.mid=member.mid WHERE $where ORDER BY place.time");
$sbl->execute(array(
':place_name' => '%'.$keyword.'%',
':state' => '%'.$location.'%'
));
//echo $sbl;
if($sbl->rowCount() == 0){
echo "No item found";
}
else{
while($data=$sbl->fetch()){
echo $data['place_name']."<br/>";
echo $data['description']."<br/>";
}
}
}
До сих пор этот код работает, но не так как я ожидал, что он должен возвращать результаты, связанные с поиском входа и его расположение, если место упоминается, но он возвращает все, как связанные с не связаны она просто не ограничивает его к соответствующему результату или результатам поиска.
Если вы не предоставите некоторые данные или не настроите скрипт SQL, нам тоже будет очень тяжело. –
Какой запрос вы пытаетесь? –
@halfer Я отредактировал мой вопрос, пожалуйста, посмотрите @ мои коды. – rapulu