表中没有记录时无法获取地质点

e3bfsja2  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(384)

当我使用

'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

但是当表为空时,这个函数不会返回点,但是当我在表中手动创建一行时,它正在工作。。。
我怎样才能解决这个问题?
谢谢

gmxoilav

gmxoilav1#

如果没有记录,则返回0:

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

7hiiyaii2#

试试这个
只有一张唱片

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

相关问题