1

このクエリが機能しないのはなぜですか?

$query = ("SELECT * FROM 
                (SELECT *, (
                (((endingLatitude - " . $h . ")(endingLatitude - " . $h . "))
                /" . pow($r1, 2) . ")
                 + 
                 ((endingLongitude - " . $k . ")(endingLongitude - " . $k . "))
                 /" . pow($r2, 2) . "
                 ) AS point2 
                FROM (SELECT *, ((
                (
                ((startingLatitude - " . $h . ")(startingLatitude - " . $h . "))
                /" . pow($r1, 2) . ") 
                + 
                ((startingLongitude - " . $k . ")(startingLongitude - " . $k . "))
                /" . pow($r2, 2) . ")) 
                AS point1 
                FROM (SELECT * FROM trips WHERE distance >='" . ($distance * .25) . "') as query1)
                 as query2) as query3 WHERE point1 <= 1 AND point2 <= 1 LIMIT 0 , 10;");

$result = mysqli_query($con, $query);

$h と $k は、それぞれ楕円の x 座標と y 座標です。ここにある式を使用して、(startingLat,startingLong) と (endingLat,endingLong) の 2 つの点が、垂直高さ $r1 および水平高さ $r2 の楕円内にあるかどうかを計算しています。また、検索する行を、距離セル値が $distance * .25 より大きい行に制限しています。

括弧のエラーや、サブクエリ/計算の実行方法に関係があると思います。

使用する

die(mysqli_error($con)); 

のエラーを返しますYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(endingLatitude - 36.9564753)) /796.842964388) + ((endingLongitud' at line 3

4

1 に答える 1

2

Mysql の乗算算術演算子 * を使用する必要があると思います。 https://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_times

それ以外の:

(endingLatitude - " . $h . ")(endingLatitude - " . $h . ")

これを行う...

(endingLatitude - " . $h . ") * (endingLatitude - " . $h . ")
于 2015-05-29T05:01:51.243 に答える