ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

php – 查找数据库中所有在一组lat和long点的特定距离内的记录

2019-06-27 07:02:24  阅读:221  来源: 互联网

标签:php mysql latitude-longitude distance


我已经看过所有的例子,这是我到目前为止所得到的.

我的桌子很简单:

学校(表名)
– School_ID
– 拉特
– 长
– 县
– extrainfo

这是我的代码:

<?php

 $con = mysql_connect("xxx","xxx","xxx");



 if (!$con) {

            die('Could not connect: ' . mysql_error());

 } else {}



 mysql_select_db("xxx", $con);

 $latitude = "36.265541";

 $longitude = "-119.207153";

 $distance = "1"; //miles



 $qry = "SELECT *, (3958.75 * ACOS(SIN(" . $latitude . " / 57.2958)*SIN(lat / 57.2958)+COS(" . $latitude . " / 57.2958)*COS(lat / 57.2958)*COS(long / 57.2958 - " . $longitude . " / 57.2958))) as distance FROM schools WHERE (3958.75 * ACOS(SIN(" . $latitude . " / 57.2958)*SIN(lat / 57.2958)+COS(" . $latitude . " / 57.2958)*COS(lat / 57.2958)*COS(long / 57.2958 - " . $longitude . " / 57.2958))) <= " . $distance;

 $results = mysql_query($qry);
 if (mysql_num_rows($results) > 0) {
            while($row = mysql_fetch_assoc($results)) {
                            print_r($row);
            }
 } else {}

 mysql_close($con);

 ?>

但是当我尝试运行它时,我收到此错误:

警告:mysql_num_rows():提供的参数不是有效的MySQL结果资源

解决方法:

首先,’long’是MySQL中的保留关键字.你需要将它包含在反引号中,如下所示:

SELECT `long`,lat FROM schools

可以在此处找到保留关键字的完整列表:Reserved Words

如果您可以访问像phpMyAdmin这样的工具,我建议您在那里运行查询测试.

否则,在运行mysql_query()之后尝试在代码中执行此操作:

print(mysql_errno().' '.mysql_error());

这应该会给你MySQL生成的错误代码和错误消息.除了关键字问题之外,查询看起来还不错,但这肯定会告诉您.

标签:php,mysql,latitude-longitude,distance
来源: https://codeday.me/bug/20190627/1302134.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有