我有一个像这样的数据库
http://i.stack.imgur.com/MHEwr.jpg
我有一个PHP函数,可以从用户(网络用户)计算该地址的距离{get_distance($ person_location)}。
我需要有一个查询,它将使用该函数,并按照距离用户[使用PHP的{get_distance($ person_location)}函数的距离从数据库顺序返回数据。
有人可以帮我吗?
答案 0 :(得分:2)
您无法通过PHP函数的结果在服务器端对SQL结果进行排序。*
您的一般问题有两种方法:
您的距离计算可能依赖于地理坐标(纬度和经度)。保存数据库中每个地址的数据,然后在SQL中进行距离计算。
在此处详细了解如何在MySQL中执行此操作:Fastest Way to Find Distance Between Two Lat/Long Points
你的待办事项清单。做以下事情:
从现在开始做以下事情:
SELECT
查询计算距离并进行排序在数据库中查询所有地址,将它们放入PHP数组中,使用您的函数计算当前用户的距离,然后对数组进行排序。
我强烈建议不要这样做,并在服务器端实施所有内容(方法1)。
* 理论上你可以通过计算离线每个地址的距离,用结果更新临时表,然后使用这个临时表再次查询你的表来对结果进行排序。但是,这比用PHP做的更糟糕,你甚至不应该考虑这个!
答案 1 :(得分:1)
imho不可能在查询中使用PHP函数,只能使用MySQL提供的聚合函数。 我想你需要通过PHP处理数据。