当我使用
'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
但是当表为空时,这个不会返回点,但是当我手动在表中创建一行时,它就可以工作了……
我该如何解决?
谢谢
答案 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