当前位置: 首页 > 知识库问答 >
问题:

laravel sql查询中的语法错误

丁宏浚
2023-03-14

我在寻找一个特定点周围的距离。

我在我的数据库中有这些项目,带有lat和long。

我想得到指定半径范围内的所有结果。

我就是这样得到的:

    $lat = '51,3';
    $long = '4,3';
    $radius = '5';

    $hamsters = Hamster::select(
           DB::raw("*,
                         ( 6371 * acos( cos( radians(?) ) *
                           cos( radians( lat ) )
                           * cos( radians( long ) - radians(?)
                           ) + sin( radians(?) ) *
                           sin( radians( lat ) ) )
                         ) AS distance"))
           ->having("distance", "<", "?")
           ->orderBy("distance")
           ->setBindings([$lat, $long, $lat,  $radius])
           ->get();

现在它给了我一个错误:

SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第4行(SQL:select*,(6371*acos(cos(radians(51,3))*cos(radians(lat))*cos(radians(long)-radians(4,3))sin(radians(51,3))*sin(radians(lat)))的正确语法作为距离仓鼠的距离具有距离

谁有办法解决这个问题?

共有1个答案

谢修真
2023-03-14

Long是mysql源代码中的保留关键字

您必须在与解决方案同名的任何标签周围使用倒勾(`)。

 类似资料:
  • 我试图在Android中创建一个新的SQLite数据库。这是我的onCreate方法: 这会引发语法错误: android.database.sqlite.SQLiteExcture:在"AUTOINCRIMENT"附近:语法错误(代码1):,编译时:创建表event_table(ID INTEGER PRIMARYKEY AUTOINCRIMENT, EVENTNAME TEXT, UniXTI

  • 请查看与您的MySQL server版本相对应的手册,以便在

  • 我遇到了这个错误。 com.mysql.jdbc.exceptions.jdbc4。您有一个错误,在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确的语法使用附近'like='1',不喜欢='0',mealID='17'WHERE mealID='17"在第1行在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在

  • 问题内容: 我想用此查询执行的操作是:我有一个名为Dept的表,其中包含所有部门名称和ID,具有用户名,部门ID和ID的用户信息。我也有一个名为checkinout的第三个表,该表具有用户ID,并带有时间。 因此,我想(使用部门名称)将Checkinout表中的所有数据从属于该部门的人员那里获取,但是当我尝试该查询时,它给了我一个错误: 我无法解决。我正在使用Acces数据库。 非常感谢您的帮助。

  • 问题内容: 我有一个带下表的sqlite数据库: 两个示例记录如下所示: (大麦的球队输了,安娜的赢了。每场比赛每队都有几名球员。)我想创建一个查询,该查询将返回所有有x个玩家在一个团队而y个玩家在另一个团队的游戏,以及这些游戏的累积结果。游戏。 我知道如何使用perl和csv文件来执行此操作,并且我相信我可以对dbi接口使用相同的方法。但是,我想学习如何仅使用SQL查询来创建此报告。我是SQL的

  • 问题内容: 消息102,级别15,状态1,第5行’)’附近的语法不正确 这个查询有什么问题,请帮忙。 问题答案: 尝试添加一个表名(例如),如下所示: 如果您不需要嵌套查询,也可以使用以下查询: