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の中で罰金に動作します。私は、JavaScriptのバックエンドを経由してのMySQLに接続するために Dbslayer に使用していて、要求があります1064エラーを返します。

ここでエンコードされたDBSlayer要求文字列は次のとおりです。

  

ます。http:// localhostを:9090 /デシベルの{%22SQL%22:%22select%20 * %20from%20%28select%20 *、%203956% 20 *%202パーセント20 *%20ASIN%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%28RADIANS%28から122.6942014% 20-%20lng%29/2%29、 2%29%29%29%20AS%20distance%20from%20%60stops%60%20order%20by%20%60distance%60%20%60route%60%20asc%29%20as%20P%20group%20by%20 %60route%60%20%60dir%60%20order%20by%、20%60distance%60%20asc%20limit%2010% 22}

とレスポンスます:

  

{「にmysql_errno」:1064、「MYSQL_ERROR」:「あなたのSQL構文でエラーが発生している。右の構文についてはMySQLサーバのバージョンに対応が近い使用すること取扱説明書を確認してください「(RADIANS(45.5200077))* COS (RADIANS(LAT))* POWER(SIN(RADIANS(-122.6942014 - 行1" においてLNG」、 "サーバー": "trimet"}

ありがとうございます。

役に立ちましたか?

解決

あなたの問題の可能性即時ソースは、URLエンコードです。私はそのままプラスオペレータが送信される参照してください。 +は、伝統的なエンコーディングで、のスペースを意味するために使用されているから、危険です。 http://www.faqs.org/rfcs/rfc1738する

他のヒント

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

どのようにSQLをエスケープしていますか?上記の「距離、ASC」を読み出して、あなたのように見えるが、「ルート」を逃しています。それのように見えますが、そこから下り坂になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top