标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。