【问题标题】:sorting distance in MySQL PHP [duplicate]MySQL PHP中的排序距离[重复]
【发布时间】:2012-09-27 12:48:57
【问题描述】:

可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我的代码:

<?php 
$Sql="SELECT *, (3959 * acos(cos(radians(37)) * cos(radians(44)) * cos(radians(55) -    radians(-122)) + sin(radians(37)) * sin(radians(44))) as distance FROM TableName       HAVING distance < 25 ORDER BY distance LIMIT 0 , 20";
$result=mysql_query($Sql); 

while ($row = mysql_fetch_array($result)){
   echo $row['Id'];
}

错误: 警告:mysql_fetch_array() 期望参数 1 是资源,/home 中给出的布尔值...

您好,我在数据库中存储了经度和纬度,我想根据用户当前的经度和纬度以及存储在数据库中的商店经度和纬度来计算 KM - 距离。我还想要一个基于距离的排序结果。我用谷歌搜索并找到了一些解决方案,但出现了奇怪的错误.. 请检查我的代码。我没有在查询中使用变量。我只是想测试它是否运行。请帮忙

【问题讨论】:

  • 将此行 $result=mysql_query($Sql); 更改为 $result=mysql_query($Sql)or die(mysql_error()); 并检查您的错误
  • 我已将其替换为 $result=mysql_query($Sql) 或 die(mysql_error());但现在我看不到任何错误,也看不到任何结果

标签: php mysql distance latitude-longitude sorted


【解决方案1】:

我发现新的应该是这样的

(3959 * acos(cos(radians(37)) * cos(radians(44)) * cos(radians(55) -    radians(-122)) + sin(radians(37)) * sin(radians(44))))

你缺少“)”

【讨论】:

  • 如果没有提及,默认为asc
  • 我现在把“)”页面空白后看不到任何错误。甚至没有显示任何结果
【解决方案2】:

您的 SQL 语句中opening parentheses 的编号不等于closing parentheses 的编号。

试试这个...

SELECT *, (
        3959 * acos(
                 cos(radians(37)) * cos(radians(44)) * 
                 cos(radians(55) -  radians(-122)) + 
                 sin(radians(37)) * sin(radians(44))
                )
       )
    as distance FROM TableName HAVING distance < 25 ORDER BY distance LIMIT 0 , 20

【讨论】:

  • 是的,我错过了右括号,但现在我看不到页面空白的任何错误。但是我正在输入此代码但无法得到任何东西
  • 您的表中可能没有任何记录满足此条件。检查mysql_num_rows($result)
  • 如果我只写 Select * from tableName.然后它显示结果,但如果我将上面的查询用于排序,那么它不会显示任何错误或任何记录
  • 这意味着您没有任何距离小于 25 的记录。您的代码是正确的。尝试一些其他值而不是 25。
【解决方案3】:

如果您在数据库中存储点,您可以考虑使用: http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html 如果您的 MySQL 版本是 5.0.16 或更高版本。

这里有一个例子:http://howto-use-mysql-spatial-ext.blogspot.com/

【讨论】:

    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多