PHP / SQL - Как манипулировать пространственным типом данных Point SQL в PHP? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь вычислить расстояние между двумя точками, хранящимися в столбце SQL типа точки.

Пользователи могут указать свой родной город, и мое приложение позволит им искать разные вещи вокруг них.

Моя проблема с запросом, я выбираю все столбцы, относящиеся к родному городу пользователя, и сохраняю их в переменных. Хотя я не знаю, как манипулировать типом данных SQL Point в PHP.

Когда я пишу это:

var_dump($coordinates); // city coordinates that MySQL will fetch

PHP сообщит мне, что это строка при отображении нечитаемых символов.

Я попытался извлечь долготу и широту с помощью этого оператора SQL и сохранить их в переменных:

'SELECT ST_X(coordinates) AS longitude, ST_Y(coordinates) AS latitude FROM cities';

Но этот запрос

SELECT * FROM table a 
    INNER JOIN cities b ON a.cityId = b.id
WHERE (acos(sin(radians(ST_Y(b.coordinates))) 
      * sin(radians(*ANY_VALUE*)) 
      + cos(radians(ST_Y(b.coordinates))) 
      * cos(radians(*ANY_VALUE*)) 
      * cos(radians(ST_X(b.coordinates)) 
      - radians(*ANY_VALUE*))) 
      * 6378137) <= 50000

Не будет работать с этими переменными, пока он работает, если я введу его вручную в PhpMyAdmin с любыми координатами.

Любой совет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...