如何在 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 能够处理球面坐标系和笛卡尔坐标系,因此空间索引非常有用。