خطأ MySQL 1064 ، يعمل في سطر الأوامر و phpmyadmin ؛ ليس في التطبيق
-
25-09-2019 - |
سؤال
ها هو استعلامي:
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 الخاصة بي ، ويعيد الطلب خطأ 1064.
هنا هي سلسلة طلب DBSLayer المشفرة:
http: // localhost: 9090/dB؟ 29/٪ 202 ٪ 29 ، ٪ 202 ٪ 29 ٪ 20+٪ 20COS ٪ 28Radians ٪ 2845.5200077 ٪ 29 ٪ 29 ٪ 20*٪ 20COS ٪ 28Radians ٪ 28lat ٪ 29 ٪ 20*٪ 20power ٪ 28sin ٪ 28-122.6942014 ٪ 20- ٪ 20lng ٪ 29/2 ٪ 29،2 ٪ 29 ٪ 29 ٪ 29 ٪ 20AS ٪ 20DISTANCE ٪ 20FROM ٪ 20 ٪ 60STOPS ٪ 60 ٪ 20BY ٪ 20BY 60DISTANCE ٪ 60 ، ٪ 20 ٪ 60ROUTE ٪ 60 ٪ 20 ٪ 29 ٪ 20AS ٪ 20p ٪ 20group ٪ 20by ٪ 20 ٪ 60Route ٪ 60 ، ٪ 20 ٪ 60dir ٪ 60 ٪ 20dord ٪ 20by ٪ 20 ٪ 60distance ٪ 60 ٪ 20asc ٪ 20limit ٪ 2010 ٪ 22}
والرد:
{"mysql_errno": 1064 ، "mysql_error": "لديك خطأ في بناء جملة SQL الخاص بك ؛ تحقق من الدليل الذي يتوافق مع إصدار خادم MySQL الخاص بك لاستخدام بناء الجملة الأيمن بالقرب من" (45.5200077) LAT)) * Power (SIN (Radians (-122.6942014 - LNG 'at Line 1 "،" Server ":" Trimet "}
شكرًا!
المحلول
مصدر فوري محتمل لمشكلتك هو ترميز عنوان URL. أرى أن المشغل الزائد ينتقل كما هو. هذا خطير ، لأن +
اعتاد أن يعني الفراغ في الترميز التقليدي. http://www.faqs.org/rfcs/rfc1738
نصائح أخرى
...distance%60%20asc%20...
كيف تهرب من SQL؟ يبدو أنك تفتقد "الطريق" ، لذلك يقرأ أعلاه "المسافة ، ASC". يبدو أنه ينحدر من هناك.