0

我有一个问题一直让我发疯。我有将坐标传递给查询函数的代码。该查询适用于纬度见下文,但不适用于经度。我对两者都有一个复杂的 WHERE 子句,但为了排除故障,我转移到了单独的 WHERE 子句。下面的代码显示了被注释掉的纬度。如果我取消注释,纬度将按预期工作。参考数据库中的所有值都是双精度值,经度为负值,纬度值为正值。我一直在寻找不正确的语法,但找不到它。我什至有要传递的四舍五入的变量、双重检查的列名、反向运算符等等。这两个 WHERE 分别是相同的;并且经度变量根据给出的错误反馈干净地传递。那么,沃尔多在哪里?谢谢你!

错误:

数据库查询失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'long>=-93.497315 AND long<=-91.365967' 附近使用正确的语法

调用函数:

$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

LONG是MySQL 中的保留字

所以你需要用反引号引用列名:

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