Php 距离计算不返回结果
来自Php 距离计算不返回结果,php,mysql,sql,distance,Php,Mysql,Sql,Distance,来自api.php的代码: $lat = $_GET['lat']; $lng = $_GET['lon']; try {$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);} catch(PDOException $e){echo($e->getMessage());} $stmt = $dbh->prepare("SELECT *, (P
api.php
的代码:
$lat = $_GET['lat'];
$lng = $_GET['lon'];
try {$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);}
catch(PDOException $e){echo($e->getMessage());}
$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
POW(69.1 * (:lon - `long`) * COS(`lat` / 57.3), 2)) AS distance
FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
$stmt->bindParam(':lat', $lat, PDO::PARAM_STR);
$stmt->bindParam(':lon', $lon, PDO::PARAM_STR);
$venues = array();
if ($stmt->execute()) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$venues[] = $row;
echo $_GET['jsoncallback'] . json_encode($venues);
}
}
…它返回的结果很好
我的语法有什么问题?对于
$lon
/$lng
变量,您有两个名称。
请尝试以下方法:
$lon = $_GET['lon'];
问题就在这里。您在查询中使用的是
:lon
而不是lng
$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
POW(69.1 * (:lon - `long`) * COS(`lat` / 57.3), 2)) AS distance
FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
$stmt=$dbh->prepare(“选择*,(POW(69.1*(`lat`-:lat),2)+
功率(69.1*(:lon-`long`)*COS(`lat`/57.3),2))作为距离
从距离
改用
$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
POW(69.1 * (:lng - `long`) * COS(`lat` / 57.3), 2)) AS distance
FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");
$stmt=$dbh->prepare(“选择*,(POW(69.1*(`lat`-:lat),2)+
功率(69.1*(:lng-`long`)*COS(`lat`/57.3),2))作为距离
从距离
I。。。我没有借口。谢谢你在一分钟内指出了我在三十分钟内找不到的东西。我需要一些睡眠!
$stmt = $dbh->prepare("SELECT *, (POW(69.1 * (`lat` - :lat), 2) +
POW(69.1 * (:lng - `long`) * COS(`lat` / 57.3), 2)) AS distance
FROM `venues` HAVING distance < SQRT(16) ORDER BY distance");