我已经看过所有的例子,这是我到目前为止所得到的。
我的表很简单:
学校(表名) - 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结果资源
答案 0 :(得分:3)
首先,'long'是MySQL中的保留关键字。你需要将它包含在反引号中,如下所示:
SELECT `long`,lat FROM schools
可在此处找到保留关键字的完整列表:Reserved Words
如果您可以访问像phpMyAdmin这样的工具,我建议您在那里运行查询测试。
否则,在运行mysql_query()之后尝试在代码中执行它:
print(mysql_errno().' '.mysql_error());
这应该会给你MySQL生成的错误代码和错误消息。除了关键字问题之外,查询看起来还不错,但这肯定会告诉你。
答案 1 :(得分:1)
老实说,我建议您只需抓住所有学校的所有纬度/经度,然后通过PHP代码循环运行Haversine函数。