【问题标题】:Running a raw query with parameter bindings has no result使用参数绑定运行原始查询没有结果
【发布时间】:2020-05-02 08:44:33
【问题描述】:

使用DB Raw后我的sql语句返回null。将请求传递给邮递员后没有数据产生

$current_lat = $request->latitude;
$current_lng = $request->longitude;
$car_type = $request->car_type;

$raw = DB::Raw("(3956 * 2 * ASIN(SQRT(POWER(SIN(('.$current_lat.' - artisans.driver_lat)
     * pi()/180 / 2), 2)+ COS('.$current_lat.' * pi()/180 ) 
     * COS(artisans.driver_lat * pi()/180)
     * POWER(SIN(('.$current_lng.' - artisans.driver_lng) 
     * pi()/180 / 2), 2) )))");

return json_encode($raw);

结果是:{}

当我尝试直接在数据库中查询时,它会返回如下输出:

4
0.03677850072504271
6.6701784633102145
-1.562010571360574

【问题讨论】:

  • 是一个关于午餐导弹的查询吗?
  • 请不要,在uber中使用haversine查询
  • 开个玩笑,看看我的答案;)
  • 我已经评论了我得到的错误
  • 为什么不check the docs?您缺少select()get()。即使只是搜索您的关键字也会在 SO、exampleexample 上找到很好的示例。

标签: sql laravel


【解决方案1】:

像这样尝试DB::select

$results = DB::select('select (3956 * 2 * ASIN(SQRT(POWER(SIN((? - artisans.driver_lat)
 * pi()/180 / 2), 2)+ COS(? * pi()/180 ) 
 * COS(artisans.driver_lat * pi()/180)
 * POWER(SIN((? - artisans.driver_lng) 
 * pi()/180 / 2), 2) ))) from artisans', [$current_lat, $current_lat, $current_lng]);

这还可以防止 SQL 注入。更多信息请查看Laravel docs

【讨论】:

  • 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 ':$current_lat * pi()/180 ) 附近使用的正确语法
  • @reaspider 错字已修复,再试一次。
  • 参数号无效(SQL: select (3956 * 2 * ASIN(SQRT(POWER(SIN((:current_lat - artisans.driver_lat)\n * pi()/180 / 2), 2) + COS(:current_lat * pi()/180 ) \n * COS(artisans.driver_lat * pi()/180)\n * POWER(SIN((:current_lng - artisans.driver_lng) \n * pi()/180 / 2), 2) ))) 来自工匠)"
  • DB::select(" select (3956 * 2 * ASIN(SQRT(POWER(SIN(($current_lat - artisans.driver_lat) * pi()/180 / 2), 2)+ COS ($current_lat * pi()/180 ) * COS(artisans.driver_lat * pi()/180) * POWER(SIN(($current_lng - artisans.driver_lng) * pi()/180 / 2), 2) )) ) 来自工匠");
【解决方案2】:

我觉得应该是这样的

DB::table('artisans')
    ->select(DB::Raw("your raw"))
    ->get();

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2017-12-13
    • 2014-06-06
    相关资源
    最近更新 更多