Поэтому я использую ms sql для хранения широты и долготы в географической точке, в sql я получаю эти данные с помощью:
SELECT
location.Lat AS lat,
location.long AS long,
location
FROM tableName;
И это хорошо работает, lat — 20,4706622, длина — 44,8132969, а местоположение — какое-то грязное шестнадцатеричное число.
Но когда я пытаюсь сделать то же самое в PHP, это не работает, это то же самое и вызвано:
location.lat/long
Вот как выглядит мой php
<?php
session_start();
include "connect.php";
$query = $handler->query("SELECT location.lat AS lat, street FROM shops");
$row = $query->fetch(PDO::FETCH_OBJ);
$location[0] = $row->lat;
$location[1] = $row->street;
echo json_encode($location);
Если я заменим location.lat/long на что-либо еще, например, местоположение, улицу, город или любой другой столбец, это сработает.
Я знаю, что это зависит от location.lat, но я не знаю, как его отформатировать.
Если что-то не понятно, пожалуйста, спросите.
Если я прав, вы назвали свои поля location.Lat
а также location.long
Измените имена полей вашей таблицы на lat
а также long
Затем измените ваш запрос на:
SELECT
Lat AS lat,
long AS long,
location
FROM tableName;
Другой вариант — создать представление, если по какой-то причине вы не можете изменить структуру БД.
По вашему мнению этот запрос работает:
SELECT
location.Lat AS lat,
location.long AS long,
location
FROM tableName;
Если ваш запрос работает, вы можете создать представление:
create view new_table_name as
SELECT location.Lat AS lat, location.long AS long, location FROM tableName;
Затем измените ваш php-скрипт, чтобы использовать новое представление, как если бы это была обычная таблица.
Select * from new_table_name
Должен дать вам представление о том, что только что произошло.
Других решений пока нет …