4

私はすべての例を見てきました、そしてこれが私がこれまでに得たものです。

私のテーブルはシンプルです:

学校(テーブル名)-School_ID-lat-long-county-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結果リソースではありません

4

2 に答える 2

3

まず、'long' は MySQL の予約済みキーワードです。次のようにバッククォートで囲む必要があります。

SELECT `long`,lat FROM schools

予約済みキーワードの完全なリストは、ここにあります:予約語

phpMyAdmin のようなツールにアクセスできる場合は、そこでクエリのテストを実行することをお勧めします。

それ以外の場合は、mysql_query() を実行した後にコードでこれを実行してみてください。

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

これにより、MySQL によって生成されたエラー コードとエラー メッセージが表示されます。クエリはキーワードの問題以外は問題ないように見えますが、これで明確にわかります。

于 2009-04-26T04:12:23.183 に答える
1

正直なところ、すべての学校のすべての緯度/経度を取得し、PHPコードを介してHaversine関数の実行をループすることをお勧めします。

于 2009-04-26T03:54:51.073 に答える