2015-05-29 14 views
1

Почему этот запрос не работает?Ошибка вычисления подзапроса?

$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 соответственно. Я использую найденную формулу here для вычисления того, находятся ли две точки (startLat, StartingLong) и (конечныйLat, конецLong) в пределах эллипса с вертикальной высотой $ 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

+0

какая ошибка вы получаете? –

+0

@anantkumarsingh: 'if (! $ Result)' then prints, $ result = mysqli_query ($ con, $ query); ' –

+0

put' $ result = mysqli_query ($ con, $ query) или die (mysqli_error ($ con)); 'и проверить реальную ошибку, которую вы получаете. Благодарю. –

ответ

2

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

Вместо:

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

ли это ...

(endingLatitude - " . $h . ") * (endingLatitude - " . $h . ") 
+0

Это может быть так! Исправлена ​​ошибка, однако мой запрос все еще не работает должным образом, поэтому он должен быть чем-то другим ... Я рассмотрю его. –