0

私は私をバタバタさせている問題を抱えています。座標をクエリ関数に渡すコードがあります。クエリは緯度に対しては正常に機能しますが、経度に対しては機能しません。両方に複雑なWHERE句がありましたが、トラブルシューティングのために2つに別々のWHERE句を移動しました。以下のコードは、WHEREがコメントアウトされた緯度を示しています。コメントを逆にすると、緯度は期待どおりに機能します。参照されるデータベースのすべての値は、経度が2倍で負であるのに対し、緯度はすべて正です。不適切な構文を探しましたが、見つかりません。渡す変数を丸めたり、列名を再確認したり、演算子を逆にしたり、その他たくさんあります。2つのWHEREはそれぞれ同一です。経度変数は、与えられたエラーのフィードバックに基づいてきれいに通過しています。それで、ウォルドはどこにありますか?ありがとう!

エラー:

データベースクエリが失敗しました:SQL構文にエラーがあります。1行目の「long>=-93.497315AND long <=-91.365967」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

関数の呼び出し:

$box=$_GET["rect"];
$box=ltrim($box,"((");
$box=rtrim($box,"))");
$boxArray = explode("), (",$box);
$sw = explode(", ",$boxArray[0]);
$ne = explode(", ",$boxArray[1]);
$swLat = round($sw[0], 6);
$swLong = round($sw[1], 6);
$neLat = round($ne[0], 6);
$neLong = round($ne[1], 6);
$job_set = get_job_by_Rectangle($swLat, $swLong, $neLat, $neLong);

while ($job = mysql_fetch_array($job_set)) {
            echo $job["projectFK"] . ", ";}

問題機能:

function get_job_by_Rectangle($swLat, $swLong, $neLat, $neLong) {
global $connection;
$query = "SELECT * ";
$query .= "FROM projcoords ";
//$query .= "WHERE lat>= " . $swLat . " AND lat<= " . $neLat . " " ;
$query .= " WHERE long>=" . $swLong . " AND long<=" . $neLong . " " ;
//$query .= " ORDER BY projectFK";
$result_set = mysql_query($query, $connection);
confirm_query($result_set);

    return $result_set;
 }
4

1 に答える 1

1

LONGMySQLの予約語です。

したがって、列名をバッククォートで引用する必要があります。

$query .= " WHERE `long`>=" . $swLong . " AND `long`<=" . $neLong . " " ;
于 2012-06-23T23:32:47.533 に答える