我已经能够创建 php 函数来确定给定邮政编码的特定范围内的邮政编码列表。但是,我的下一个任务要复杂一些。
假设该表具有以下列:
id,
username
info
latitude
longitude
range
每条记录都有一个唯一的行 ID、一些信息、一个纬度、一个经度以及人们希望找到该条目的那些坐标的最大范围。因此,如果我创建一个坐标为 -20、50、范围为 15 的条目,这意味着我只希望坐标 -20、50 15 英里内的人能够看到我的条目。弄清楚运行搜索的用户的纬度和经度是一件小事。
当用户在数据库中搜索时,所有记录都应该在用户 lat/long 的 range 值内检索纬度和经度坐标。
因此,使用距离公式来说明这一点的代码的非功能示例是
$userLat
= 运行搜索的用户的纬度
$userLong
= 运行搜索的用户的经度
SELECT info FROM table
WHERE sqrt(($userLat - lat)^2 - ($userLong - long)^2) <= range
ORDER BY username ASC
这将是理想的,但从编码的角度来看它是无效的。有没有办法在一个查询中使用 PHP 和 MySQL 运行上述比较?这将涉及能够使用给定行中的多个列值运行操作。
更新+解决方案
我创建了另一个问题条目来解决这个问题,并且有一个非常紧凑的功能来做这个问题想要的。coderpros 提供的功能是它的灵感来源(他的功能在某些情况下具有更好的处理能力)。然而,由于我使用我的函数对输入有很大程度的控制,我创建了一个单独的函数。它可以在下面的链接中找到: