Ошибка расчета подзапроса?

Почему этот запрос не работает?

$query = ("SELECT * FROM
(SELECT *, (
(((endingLatitude - " . $h . ")(endingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((endingLongitude - " . $k . ")(endingLongitude - " . $k . "))
/" . pow($r2, 2) . ") AS point2
FROM (SELECT *, ((
(
((startingLatitude - " . $h . ")(startingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((startingLongitude - " . $k . ")(startingLongitude - " . $k . "))
/" . pow($r2, 2) . "))
AS point1
FROM (SELECT * FROM trips WHERE distance >='" . ($distance * .25) . "') as query1)
as query2) as query3 WHERE point1 <= 1 AND point2 <= 1 LIMIT 0 , 10;");

$result = mysqli_query($con, $query);

$ h и $ k — координаты эллипсов x и y соответственно. Я использую формулу, найденную Вот чтобы вычислить, находятся ли две точки, (startLat, начальная длина) и (конечная длина, конечная длина) в эллипсе с вертикальной высотой $ r1 и горизонтальной высотой $ r2. Я также ограничиваю строки, которые я ищу, строками, у которых значение ячейки расстояния больше, чем $ distance * .25.

Я думаю, что это может быть связано с ошибкой в ​​скобках или с тем, как я выполняю свои запросы или выполняю расчеты.

С помощью

die(mysqli_error($con));

возвращает ошибку You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(endingLatitude - 36.9564753)) /796.842964388) + ((endingLongitud' at line 3

1

Решение

Я считаю, что вы должны использовать Mysql умножение арифметический оператор, *.
https://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_times

Вместо:

(endingLatitude - " . $h . ")(endingLatitude - " . $h . ")

Сделай это…

(endingLatitude - " . $h . ") * (endingLatitude - " . $h . ")
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]