【发布时间】:2023-03-29 14:15:02
【问题描述】:
我有一个带有地理列的 PostGIS 数据库。我希望能够使用 PHP 来选择地理位置,这样我就可以使用 ST_Distance 运行另一个查询来获取点之间的距离。但是,当我运行
SELECT geog from locations;
我得到了一个奇怪的值 6 而不是 HEX 输出(我所期望的是 0101000020E6100000C442AD69DEAD5740575BB1BFEC6E3D40 之类的东西)。当我在 phpPgAdmin 中使用相同的查询时,我得到了预期的输出,但不是来自我的 PHP 脚本:(
非常感谢任何帮助 :)
谢谢,
艾尔莎
编辑
$locations_result = @pg_query($DBConnect, "SELECT geog from locations;");
if (!$locations_result) {
echo "An error occurred upon getting data from the locations table.\n";
exit;
}
$i = 0;
while ($locations_arr = pg_fetch_row($locations_result)) {
$locations['location'][$i] = $locations_arr[0];
echo $locations['location'][$i];
$i++;
}
EDIT2 所以现在我试图在 ST_Distance 函数中直接选择地理,以便它可以直接获取地理结果,例如:
SELECT ST_Distance(geog_a, geog_b) FROM(SELECT geog AS geog_a FROM location WHERE id=123 UNION SELECT geog AS geog_b FROM location WHERE id=345);
但是我的 SQL 语法是错误的,我还没有弄清楚如何才能得到我想要的结果。 UNION 将这些值放在一列中,这就是我已经拥有的。相反,我需要类似的东西:
geog_a |geog_b
----------------
hdsklgh|shfksh
【问题讨论】:
-
如果您不发布任何 PHP 代码,您怎么能期望得到帮助?
-
其实我好像漏了那个,现在发帖。感谢您指出这一点! :)
-
你试过
geog::geography吗? -
如果你的意思是:
SELECT geog::geography FROM locations;那么是的,我刚刚做了,仍然得到 6 的输出 :(
标签: php postgresql phpmyadmin postgis