表中没有记录时无法获取地理位置

时间:2018-12-12 06:50:14

标签: mysql laravel geospatial

当我使用

'geopoint' => DB::raw('POINT('.$data['lat'].', '.$data['lng'].')')

它正在工作,但是它很容易受到SQLInjection的攻击。所以我用

'geopoint' => DB::select("SELECT POINT(?, ?) as point FROM my_table", [$data['lng'], $data['lat']])[0]->point

但是当表为空时,这个不会返回点,但是当我手动在表中创建一行时,它就可以工作了……

我该如何解决?

谢谢

2 个答案:

答案 0 :(得分:0)

如果没有记录,它将返回0:

DB::select("SELECT COALESCE(POINT(?, ?),0) as point FROM my_table", [$data['lng'], $data['lat']])[0]->point

答案 1 :(得分:0)

尝试这个

  

仅获得一条记录

 DB::select(DB::raw("SELECT POINT(:lat , :lng) as point FROM my_table"), ['lat' => $data['lng'],'lng' => $data['lat']])[0]->point