我正试图在距离给定纬度和经度100米的范围内从我的数据库中获取一些位置。
我在Google网站上发现了一个允许您这样做的查询,但是当我删除查询中的变量并将其替换为您应该在准备好的声明中的问号时,它不起作用
我的查询如下:
$getLocation = $db->prepare("
SELECT
id, title, lat, `long`, verified, (
3959 * acos (
cos ( radians(?) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(?) )
+ sin ( radians(?) )
* sin( radians( lat ) )
)
) AS distance
FROM markers
HAVING distance < 0.0621371192
ORDER BY distance
LIMIT 1;
");
$getLocation->bind_param("sss", $newLatitude, $newLongitude, $newLatitude);
$getLocation->execute();
$getLocation->store_result();
$getLocation->bind_result($locId, $locTitle, $locLat, $locLong, $locVerified, $locDist);
if($getLocation->num_rows > 0) {
while($getLocation->fetch()) {
echo "yes";
}
}
else {
echo "no :(";
}
我不是准备好的陈述专家,所以请告诉我我做错了什么。
谢谢,
答案 0 :(得分:0)
最后我通过将查询更改为:
来解决我的问题$getLocation = $db->prepare("
SELECT
id, title, lat, `long`, verified, (
3959 * acos (
cos ( radians(?) )
* cos( radians( lat ) )
* cos( radians( `long` ) - radians(?) )
+ sin ( radians(?) )
* sin( radians( lat ) )
)
) AS distance
FROM marker
HAVING distance < 0.0621371192
ORDER BY distance
LIMIT 1;
");
现在工作正常。