通过 SQL/PHP 回显计算的距离
Posted
技术标签:
【中文标题】通过 SQL/PHP 回显计算的距离【英文标题】:Echoing out Calculated Distance Via SQL/PHP 【发布时间】:2013-07-22 18:00:11 【问题描述】:我从谷歌获得了一些代码来帮助我计算 mysql 中两个对象之间的距离,并且它们也可以按照计算出的距离正确排序...
这里有一段代码来帮助解释我是如何做到的:
$EQUASION = '( 6371 * acos( cos( radians('.$GPSLAT.') )
* cos( radians( field_Latitude ) ) * cos( radians( field_Longitude )
- radians('.$GPSLONG.') ) + sin( radians('.$GPSLAT.') )
* sin( radians( field_Latitude )) ) )
AS distance ';
我的问题是,我如何使用和回显距离本身......
while($row = mysql_fetch_array($results))echo $row['distance']
简单地呼应“行距离”似乎不起作用,因为它实际上不是数据库中的一个字段,而是一个计算出的距离。如何访问此信息,以便正确显示“您距离某某物体##Km”之类的信息
【问题讨论】:
请显示您的查询 回声部分应该可以工作。这里似乎没有什么问题。查询是否正常工作? 查询的SELECT
子句中的任何内容都将放在$row
中,无论是表中的字段还是查询计算的内容。
我知道这很奇怪,查询返回很好,并且在我的查询编辑器中排序很好。但是在回显该行时它总是返回空白,我将不得不检查我的文件,因为它会降低查询和回显之间的距离......我整晚都在 mysql 中查找“AS”引用昨晚。我将提供更多详细信息,因为我可以为你们收集它们。不幸的是,我的 Query Builder php 文件超过 50k,所以我无法发布整个文件供你们查看。
【参考方案1】:
在实际循环本身的计算过程中使用 $row['distance'] AS 距离变量时,存在一个基本缺陷,导致计算返回 false。因此我从来没有得到任何回报。
我只是改变了
if ($row['distance'] != 0) else
到
if ($row['distance'] > 0) else
我开始得到结果。在这种情况下,由于它总是返回 false,因此在 if 之后的 else 语句中存在空白结果或任何触发变量擦除的情况。
我的错误是在一个非常大的文件中进行了简单的 typeo。
【讨论】:
以上是关于通过 SQL/PHP 回显计算的距离的主要内容,如果未能解决你的问题,请参考以下文章