laravel 的 sql 查询中的语法错误
Posted
技术标签:
【中文标题】laravel 的 sql 查询中的语法错误【英文标题】:Syntax error in sql query for laravel 【发布时间】:2015-01-08 11:47:36 【问题描述】:我正在寻找特定点周围的距离。
我的数据库中有这些项目的经纬度。
我想得到它周围指定半径的所有结果。
这就是我得到它的方式:
$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 服务器版本,用于在 'long 附近使用正确的语法) - 弧度(?))+ sin(弧度(?))*'在第4行(SQL:选择*,(6371 * acos( cos( 弧度(51,3) ) * cos( 弧度( lat ) ) * cos( 弧度( long ) - 弧度(4,3) ) + sin( 弧度(51,3) ) * sin( 弧度(纬度)) ) ) AS 距离
hamsters
有distance
distanceasc)
有人可以解决这个问题吗?
【问题讨论】:
你为什么不->toSql()
而不是->get()
并回显它并查看正在生成的查询。
【参考方案1】:
Long是mysql中的保留关键字source
您必须在任何具有相同名称的标签周围使用反引号 (`) 作为解决方法。
【讨论】:
以上是关于laravel 的 sql 查询中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章
DAL中的一句sql总是提示'@pagesize'附近有语法错误。
Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误
Laravel 的查询构建器 JSON 选择器 `field->key` 导致语法错误