是的,之前我问了一个类似的问题,但我想我可能对这个问题有了更好的了解,应该能够更好地写出这个问题。
所以情况就是这样,我已经在一个起点附近做了大约20英里。我在数据库中搜索开始lat的任一侧的这个数量并开始很长时间。一旦我得到结果,我将通过一个不同的函数来检查确切的距离并继续。
所以这里有一些数据,这就是我要查询的内容。
$lat1 = 55.02
$lat2 = 53.04
$long1 = 1.04
$long2 = -0.43
我正在使用的查询:
SELECT * FROM table WHERE (LatCo BETWEEN :lat1 AND :lat2) AND (LongCo BETWEEN :long1 AND :long2)
我将变量绑定为标准的PDO方式。
$stmt->bindParam(":lat1", $lat1);
$stmt->bindParam(":lat2", $lat2);
$stmt->bindParam(":long1", $long1);
$stmt->bindParam(":long2", $long2);
我的表中的一些示例数据和预期结果:
Name | Lat | Long | Current Outcome
PL1 |54.023 |0.53 | Correct, pulls record
PL2 |58.125 |1.64 | Correct, does not pull record
PL3 |53.875 |-0.46 | Incorrect, pulls record
所以我对PL3进行了一些快速测试,看起来它将它拉到Long = =或高于-0.46的位置,但是如果它是-0.47那么它就不会拉动记录,即使它应该是。
我认为这可能是表中的数据类型问题,目前设置为varchar