MySQL запрос расстояния и использование AND в PHP - PullRequest
0 голосов
/ 30 марта 2020

Мне нужна помощь экспертов с запросом MySQL. У меня есть широты и долготы в базе данных MySQL. Я могу получить ближайшие местоположения из запроса, но как только я пытаюсь добавить «И» к запросу, я получаю сообщение об ошибке.

Я провел много исследований, но не смог найти ответ.

  • $lat_database - запрошенная пользователем широта
  • $lon_database - запрошенная пользователем долгота
  • latitude - имя столбца широты в MySQL база данных
  • longitude - имя столбца долготы в MySQL базе данных

SELECT *,
       ((ACOS(SIN($lat_database * PI() / 180)
            * SIN(latitude * PI() / 180)
            + COS($lat_database * PI() / 180)
            * COS(latitude * PI() / 180)
            * COS(($lon_database - longitude) * PI() / 180)
             ) * 180 / PI()
        ) * 60 * 1.1515
       ) as distance
HAVING distance <= 20
   AND items LIKE ('%" . $item . "%')
FROM items
ORDER BY distance ASC

1 Ответ

0 голосов
/ 30 марта 2020

использовать объединение и после использования, где

$sql = "SELECT *, ((ACOS(SIN($lat_database * PI() / 180) * SIN(latitude * PI() / 180) + COS($lat_database * PI() / 180) * COS(latitude * PI() / 180) * 
COS(($lon_database - longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) 
as distance FROM locations
join items on items.id = t1.item_id
where item LIKE ('%" . $item . "%')
 HAVING distance <= 20 
 ORDER BY distance ASC $limit";
...