问题描述
我从 PHP 中的 API 接收局域网和批次数据,并使用 ($jsonData[0]['lat']);
和 $jsonData[0]['lon']);
从响应中提取它们。如何将它们添加到我的 MysqL 列 location
中作为 POINT 值?
解决方法
MySQL 的几何内容提供了 ST_GeomFromText()
function。你可以这样使用它。
ST_GeomFromText('POINT(40.7488 -73.9854)')
请注意,'POINT(40.7488 -73.9854)'
是一个文本字符串,并且两个数字之间没有逗号。
如果你做这样的事情来制作这些文本字符串之一
$pointText = "POINT(" . $jsonData[0]['lat'] . " " . $jsonData[0]['lon'] . ")";
然后你可以做这样的插入:
INSERT INTO tbl (geocolumn) VALUES (ST_GeomFromText(?));
以 $pointText 作为参数。
对于 8 之前的 MySQL 版本,我同意 @El_Vanja 的建议,即为经纬度使用单独的 FLOAT
列。但是在版本 8 中,MySQL 能够处理球面和笛卡尔坐标系,因此空间索引非常有用。