使用yii框架运行查询时,我收到以下错误。我发现自己无法解决这个问题,请你帮忙恢复并解决它我做错的地方。
CDbCommand无法执行SQL语句:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在')附近使用正确的语法,2)+ POW(69.1 *( - items.longitude)* COS(items.latitude / 57.3),2)),2)as d'在第1行。执行的SQL语句是:SELECT items。*,round(SQRT(POW(69.1 *(items.latitude - ),2)+ POW(69.1 *( - items.longitude)* COS(items。 latitude / 57.3),2)),2)作为距离,u.id作为userId,u.first_name,u.last_name FROM
10yoyo_shared_item
items
JOIN10yoyo_user
u
ON items.user_id = u.id WHERE items.home_page_display_status =“Y”AND items.status =“active”AND items.category_id =“62”AND u.status =“active”HAVING distance <= 10000 ORDER BYshared_time
DESC LIMIT 4
执行的声明是:
SELECT items.*,round(SQRT( POW(69.1 * (items.latitude - ), 2) + POW(69.1 * (- items.longitude) * COS(items.latitude / 57.3), 2)),2) as distance,u.id as userId,u.first_name,u.last_name
FROM `10yoyo_shared_item` `items`
JOIN `10yoyo_user` `u` ON items.user_id=u.id
WHERE items.home_page_display_status="Y" AND items.status="active" AND items.category_id = "62" AND u.status="active" HAVING distance <=10000
ORDER BY `shared_time` DESC LIMIT 4
谢谢,Sorabh
最后我通过使用以下代码替换sqrt函数来解决我的错误,如下所示:
DEGREES(ACOS(COS(RADIANS(items.latitude))
* COS(RADIANS("'.$latitude.'"))
* COS(RADIANS(items.longitude - "'.$longitude.'"))
+ SIN(RADIANS(items.latitude))
* SIN(RADIANS("'.$latitude.'")))) AS distance
谢谢和问候,Sorabh