Я нашел довольно много похожих вопросов, но ни один из них, похоже, не соответствует тому, что я пытаюсь сделать.
Вопрос:
У меня естьPHP-код, который ищет в базе данных mysql и возвращает данные в зависимости от местоположения пользователя (широта / долгота).и он печатает данные в формате JSON.(это работает нормально и как надо).
Код выглядит следующим образом:
$latitude2 = floatval($_GET['latitude']); //no default
$longitude2 = floatval($_GET['longitude']); //no default
$sql ="SELECT b.*
FROM businesses b
ORDER
BY -- great circle distance calculation
( 3959 * ACOS( COS( RADIANS('" . $latitude2. "') )
* COS( RADIANS( b.lat ) )
* COS( RADIANS( b.lon )
- RADIANS('" . $longitude2 . "')
)
+ SIN( RADIANS('" . $latitude2 . "') )
* SIN( RADIANS( b.lat ) )
)
) ASC LIMIT 4";
Теперь мне нужно добавить еще один параметр поиска в приведенный выше запрос.Этот параметр является массивом, который создается флажками и выглядит следующим образом:
[{"title":"Toys"},{"title":"Restaurants"},{"title":"Hotel"},{"title":"Pets"},{"title":"Accounting"}]
Итак, я отправляю этот дополнительный параметр на мою страницу PHP, как и все остальные параметры через AJAX, и получаю массив в моемphp примерно так:
$filters = $_GET['filters'];
Но я не знаю, как добавить этот дополнительный параметр в текущий запрос, чтобы мой php возвращал данные на основе значения в этом массиве.
Iпробовал что-то вроде этого, что не работает:
$latitude2 = floatval($_GET['latitude']); //no default
$longitude2 = floatval($_GET['longitude']); //no default
$filters = $_GET['filters'];
$sql ="SELECT b.*
FROM businesses b
ORDER
BY -- great circle distance calculation
( 3959 * ACOS( COS( RADIANS('" . $latitude2. "') )
* COS( RADIANS( b.lat ) )
* COS( RADIANS( b.lon )
- RADIANS('" . $longitude2 . "')
)
+ SIN( RADIANS('" . $latitude2 . "') )
* SIN( RADIANS( b.lat ) )
)
) ASC WHERE categories='$filters' LIMIT 4";
Это WHERE categories='$filters'
неправильно.
Может кто-нибудь, пожалуйста, совет по этому вопросу?
РЕДАКТИРОВАТЬ:
Я пробовал все, но безрезультатно.Я даже попробовал это так и так и не получил никаких результатов из базы данных:
$sql ="SELECT b.*
FROM businesses b
ORDER
BY -- great circle distance calculation
( 3959 * ACOS( COS( RADIANS('" . $latitude2. "') )
* COS( RADIANS( b.lat ) )
* COS( RADIANS( b.lon )
- RADIANS('" . $longitude2 . "')
)
+ SIN( RADIANS('" . $latitude2 . "') )
* SIN( RADIANS( b.lat ) )
)
) ASC WHERE FIND_IN_SET(b.categories, 'Toys, Restaurants, Hotel') LIMIT 4";