Php Laravel MySql语法错误或访问冲突
输出: 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为空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
首先,下一次,如果你在这个平台上寻求帮助,试着制定一个更像问题的公式 其次,在查询中直接集成变量从来都不是一个好主意。这将使您的查询可用于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