【问题标题】:Google Maps Store Finder query not returning properlyGoogle Maps Store Finder 查询未正确返回
【发布时间】:2011-08-27 16:24:27
【问题描述】:

我必须首先让您知道,虽然我是一名经验丰富的 Rails 开发人员,但我对 PHP 和原始 SQL 相当生疏。我正在尝试使用this tutorialthis tutorial 构建商店查找器应用程序。我开会了

这是我用于查询的代码(带有我自己的数据库列名)

$user_lat = $_GET["lat"];
$user_lng = $_GET["lng"];
$radius = $_GET["radius"];

$query = "SELECT 'Address','LocName','Latitude','Longitude', ( 3959 * acos( cos( radians($user_lat) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians($user_lng) ) + sin( radians($user_lat) ) * sin( radians( Latitude ) ) ) ) AS distance FROM Locations ORDER BY distance";

我正在返回结果(仅作为测试):

$result = mysql_query($query);
if (!$result) {
  die("Invalid query: " . mysql_error());
}

$num=mysql_numrows($result);

mysql_close();
?>
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif">Name</font></th>
<th><font face="Arial, Helvetica, sans-serif">Distance</font></th>
<th><font face="Arial, Helvetica, sans-serif">Address</font></th>
</tr>

<?php
while ($row = mysql_fetch_assoc($result)) {
$f1=mysql_result($result,$i,"LocName");
$f2=mysql_result($result,$i,"distance");
$f3=mysql_result($result,$i,"Address");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2 ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
</tr>

<?php
$i++;
}
?>

但是,当我开始时,我得到了以下结果:findstore.php?lat=33.98&lng=-118.42

Name    Distance    Address
LocName     0.65415504532801    Address
LocName     0.65415504532801    Address
LocName     0.666819627384179   Address
LocName     0.923277344110443   Address
LocName     2.32751232712236    Address
LocName     2.33924574433009    Address

等等

显然距离计算正确,但我无法获取每个地址和位置名称。

我做错了什么?

谢谢!

【问题讨论】:

    标签: php javascript mysql google-maps


    【解决方案1】:

    尝试用反引号替换查询中的单引号。

    即:

    $query = "SELECT `Address`,`LocName`,`Latitude`,`Longitude`, ( 3959 * acos( cos( radians($user_lat) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians($user_lng) ) + sin( radians($user_lat) ) * sin( radians( Latitude ) ) ) ) AS distance FROM Locations ORDER BY distance";
    

    【讨论】:

    • 当您将列名用单引号括起来时,它会选择您输入的文字字符串。SELECT 'Address' ... 返回“地址”。在这种情况下不需要反引号,您可以只查询列名而无需任何内容(SELECT Address ...),它也可以正常工作。反引号只是一个好习惯。
    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多