如何在 MYSQL 点中存储两个 API 值
How can I store two API values in MYSQL Point
我从 PHP 中的 API 接收到 lan 和地块数据,并从 ($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 能够处理球面坐标系和笛卡尔坐标系,因此空间索引非常有用。
我从 PHP 中的 API 接收到 lan 和地块数据,并从 ($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 能够处理球面坐标系和笛卡尔坐标系,因此空间索引非常有用。