Php 按邮政编码查找最近的营地

Php 按邮政编码查找最近的营地,php,mysql,Php,Mysql,我有一个加拿大邮政编码数据库和脚本来进行搜索。但由于某些原因,我无法根据邮政编码搜索到最近的营地。我的SQL查询有点问题,因为当我选择营地时,它显示的业务范围不在最近的范围内 当我运行SQL查询以按距离排序获得范围内的邮政编码时,我得到以下PHP Array ( [N0C 1K0] => 0 [N0C 1G0] => 9.36 [N0C 1L0] => 9.36 [N0C 1E0] => 9.97 [N0H 2S0] => 12.95 [N0C 1H0] =>

我有一个加拿大邮政编码数据库和脚本来进行搜索。但由于某些原因,我无法根据邮政编码搜索到最近的营地。我的SQL查询有点问题,因为当我选择营地时,它显示的业务范围不在最近的范围内

当我运行SQL查询以按距离排序获得范围内的邮政编码时,我得到以下PHP

Array (
[N0C 1K0] => 0
[N0C 1G0] => 9.36
[N0C 1L0] => 9.36
[N0C 1E0] => 9.97
[N0H 2S0] => 12.95
[N0C 1H0] => 13.01
[N0G 1R0] => 15.04
[N0C 1B0] => 19.03
[N0G 2A0] => 19.07
[N0H 1C0] => 19.55
[N0G 1N0] => 20.24
[N0C 1J0] => 21.67
[N0G 2L1] => 25.39
[N0G 2L3] => 25.39
[N0G 2L0] => 25.39
[N0H 1R0] => 25.8 campground found
[N0C 1C0] => 25.83
[N0H 2V0] => 27.43
[N0G 1C0] => 29.1
 ....
[N0G 1A0] => 41.54
[L0N 1G0] => 41.86
[N0G 2J0] => 41.94
[N0G 2V0] => 42.21
[L0M 1P0] => 43.21
[N0H 2P0] => 43.76
[N0G 1Y0] => 44.27
[L0M 1L0] => 44.27
[N0G 2P0] => 44.28 campground found
[L0M 1G0] => 44.48
[N4L 1R4] => 44.49 campground found
)
我想得到25.8的露营地细节,除了我得到44.28的,救命

SELECT camp_id FROM campgrounds WHERE postal = '".addslashes($key)."' LIMIT 1;

我应该在……之前点一份菜吗我确实试过这个。但也许我的查询顺序错了

您可能想看看关于它的讨论,它是从经度和晶格的数据集开始的,但目标仍然是接近度


C.

首先进行一些基本调试。
$key
包含什么?我正在使用这个PHP类;函数get_zips_in_range,然后获取结果并进行foreach。foreach($getagents as$key=>$value){}要回答您的问题,$key是数组中的邮政编码,$value是距离。我确实用这个方法得到了露营地的结果,我只是不确定如何得到最近的一个,出于某种原因,它会按照它们在数据库中的插入方式对它们进行排序。我也尝试了几个ORDER BY,没有任何东西给出最近的。因此给定数组元素的值包含以公里为单位的距离和(可选)字符串“Campland found”?如果包含正在使用的foreach循环,可能会有所帮助。$postal='N0C 1K0'$范围=50;DBSelectFields(“从postalcodes中选择纬度、经度,其中postal=”)。addslashes($postal)。“”)$getpostal=新的zipcode_类$GetCampGrands=$getpostal->get_zips_in_range($latitude,$latitude,$postal,$range,'distance_asc');foreach($getcampgrounds as$key=>$value){$campgrounds=DBSelectAllArrays(“从postal='的营地中选择营地id”)。addslashes($key)。“'LIMIT 1”);foreach($campgrounds as$camp){$i++;$camp[]=array($camp);}如果($i>=1)中断;}