Php Laravel MySql语法错误或访问冲突

Php Laravel MySql语法错误或访问冲突,php,mysql,laravel,Php,Mysql,Laravel,输出: message:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行SQL:select*from users WHERES select*,*,中“*,6371*acoscosradians28.392200\n*COSRADISLAT\n*cosra”附近使用的正确语法,6371*acoscosradians28.392200\n*COSRADIANS28.392200\n*cosradiansl

输出:

message:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行SQL:select*from users WHERES select*,*,中“*,6371*acoscosradians28.392200\n*COSRADISLAT\n*cosra”附近使用的正确语法,6371*acoscosradians28.392200\n*COSRADIANS28.392200\n*cosradianslat\n*COSRADIANSLANT\n-弧度77.320801\n+sinradians28.392200\n\n*SINRADIANSLATS\n-弧度77.320801\n+sinradians28.392200\n*sinradianslat<8.04672按距离asc和用户排序。删除的\u at为空


首先,下一次,如果你在这个平台上寻求帮助,试着制定一个更像问题的公式

其次,在查询中直接集成变量从来都不是一个好主意。这将使您的查询可用于sql注入。基本知识可以找到

通过查看错误中的查询,我们可以看到您将使用*通配符两次获取所有列

public static function rsine($coordinates)
{
    return '(6371 * acos(cos(radians(' . $coordinates['latitude'] . ')) 
    * cos(radians(`lat`)) 
    * cos(radians(`lng`) 
    - radians(' . $coordinates['longitude'] . ')) 
    + sin(radians(' . $coordinates['latitude'] . ')) 
    * sin(radians(`lat`))))';
}

最好将您的方法命名为scopeRsine。
但是不要使用mysql来实现这一点。改用php。在这里查看我的回答:

如何使用rsine?$coordinates=['纬度'=>'28.392200','经度'=>'77.320801'];$rsine=位置::rsine$坐标;
select
    *
from
    users
where
    exists (
        select
            *,
            *, <-- This will throw a syntax error.
            (6371 * acos(co ... the rest of the distance calculation