MySQL 1064 ошибка, работает в командной строке и phpmyadmin; не в приложении

StackOverflow https://stackoverflow.com/questions/2185188

Вопрос

Вот мой запрос:

select * 
  from (select *, 3956 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(45.5200077 - lat)/ 2), 2) + COS(RADIANS(45.5200077)) * COS(RADIANS(lat)) * POWER(SIN(RADIANS(-122.6942014 - lng)/2),2))) AS distance 
          from stops 
      order by distance, route asc) as p 
group by route, dir 
order by distance asc 
   limit 10

Это отлично работает в командной строке и в phpmyadmin. я использую Dbslayer. Для подключения к MySQL через мой JavaScript Backend, и запрос возвращает ошибку 1064.

Вот кодированная строка запроса DBSLayer:

http: // localhost: 9090 / дБ? {% 22sql% 22:% 22SQLECT% 20 *% 20 с% 20% 28 *% 20 *,% 203956% 20 *,% 203956% 20 *% 202% 20 *% 20asin% 28sqrt% 28 *% 28sin% 28radians% 2845.5200077% 20-10л. 29 /% 202% 29,% 202% 29% 20 +% 20COS% 28radians% 2945.5200077% 29% 29% 20 *% 20COS% 28RADIANS% 28LAT% 29% 29% 20 *% 20 вещей% 28SIN% 28radians% 28-122.6942014 % 20-10LNG% 29/2% 29,2% 29% 29% 29% 20as% 29% 29% 29% 20as% 20.10stance% 20% 20% 60Stoors% 60% 2045% 20Ба 30% 20% 60 Расходности% 60,% 20% 60Route% 60% 20as % 29% 20as% 20p% 20group% 20BY% 20% 60Route% 60,% 20% 60DIR% 60% 2045545% 20Ба% 20% 60 Расходности% 60% 20asc% 20limit% 2010% 22}

И ответ:

{«MySQL_ERRNO»: 1064, «MySQL_ERROR»: «У вас есть ошибка в синтаксисе SQL; Проверьте руководство, которое соответствует вашей версии MySQL Server для правильного синтаксиса для использования рядом '(Radians (45.5200077)) * COS (Radians ( LAT)) * POWER (SIN (RADIANS (-122.6942014 - СПГ »на линии 1", "Сервер": "Timet"}

Спасибо!

Это было полезно?

Решение

Возможный немедленный источник вашей проблемы - кодировка URL. Я вижу, что оператор Plus передается как есть. Это опасно, потому что + раньше имел в виду пространство в традиционном кодировке. http://www.faqs.org/rfcs/rfc1738.

Другие советы

...distance%60%20asc%20...

Как вы избежаете SQL? Похоже, тебе не хватает «маршрут», поэтому вышесказанное чтение «расстояние, ASC». Похоже, это уходит вниз оттуда.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top