Pergunta

Aqui está minha consulta:

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

Isso funciona bem na linha de comando e no phpmyadmin. estou a usar Dbslayer Para conectar -se ao MySQL através do meu back -end JavaScript, e a solicitação está retornando um erro 1064.

Aqui está a sequência de solicitação DBSLayer codificada:

http: // localhost: 9090/dB? {%22sql%22:%22Select%20*%20From%20%28SELECT%20*,%203956%20*%202%20*%20asina%28sqrt%28Power 28sin%28Radians%2845,5200077%20- 20lat% 29/%202%29,%202%29%20+%20COS%28Radians%2845.5200077%29%29%20*%20COS%28Radians%28lat%29%29%20*%20Power 28Sin%28-Radians%28-122.6942014 %20-%20lng%29/2%29,2%29%29%29%20As%20Distance%20From%20%60Stops%60%20Dorde 20by%20%60Distance%60,%20%60Route%60s. %29%20As%20p%20Group%20by%20%60Route%60,%20%60dir%60%20orde%20by%20%60Distance%60%20asc%20limit%2010%22}}

E a resposta:

{"Mysql_errno": 1064, "mysql_error": "Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à versão do servidor MySQL para a sintaxe direita para usar próximo '(Radians (45.5200077) * cos (radianos ( Lat)) * Power (sin (Radians (-122.6942014 - LNG 'na linha 1 "," servidor ":" trimet "}

Obrigado!

Foi útil?

Solução

Uma possível fonte imediata do seu problema é a codificação de URL. Vejo que o operador Plus é transmitido como está. Isso é perigoso, porque + usado para significar espaço na codificação tradicional. http://www.faqs.org/rfcs/rfc1738

Outras dicas

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

Como você está escapando do SQL? Parece que você está perdendo a "rota", então as leituras acima "Distância, ASC". Parece que vai ladeira abaixo de lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top