PHP MYSQL SELECT 查询挂在 WHERE 子句中的负值或语法上


PHP MYSQL SELECT query hanging on negative value or syntax in WHERE clause

我有一个问题一直让我很糟糕。我有将坐标传递给查询函数的代码。该查询适用于纬度,请参见下文,但不适用于经度。我有一个复杂的 WHERE 子句,但移动到单独的 WHERE 子句供两者进行故障排除。下面的代码显示了注释掉的纬度。如果我反转注释掉,纬度会按预期工作。引用的数据库中的所有值对于经度均为双精度和负值,对于纬度则为全部正值。我寻找不正确的语法,但找不到它。我什至有要传递的舍入变量、仔细检查列名、反转运算符等等。这两个 WHERE 分别相同;并且经度变量根据给定误差的反馈干净地传递。那么,沃尔多在哪里?谢谢!

错误:

数据库查询失败:SQL 语法有误;请检查 与您的 MySQL 服务器版本相对应的正确手册 在第 1 行的"long>=-93.497315 和 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;
 }

LONG是MySQL中的保留字。

因此,您需要用反引号引用列名:

$query .= " WHERE `long`>=" . $swLong . " AND `long`<=" . $neLong . " " ;