PHP MYSQL SELECT-query hangt af van negatieve waarde of syntaxis in WHERE-component

Ik heb een probleem dat me gemeen heeft gemaakt. Ik heb een code die de coördinaten doorgeeft aan een query-functie. De query werkt prima voor de breedtegraad, zie hieronder, maar niet de lengtegraad. Ik had een complexe WHERE-component voor beide, maar ben verhuisd om WHERE-clausules voor de twee te scheiden om problemen op te lossen. De onderstaande code toont de breedtegraad waarop WHERE commentaar heeft gegeven. Als ik de opmerking ongedaan maak, werkt breedtegraad zoals verwacht. Alle waarden in de database waarnaar wordt verwezen zijn Dubbel en negatief voor lengtegraad versus positief voor breedtegraad. Ik heb op onjuiste syntaxis gejaagd en kan het niet vinden. Ik heb zelfs variabelen afgerond om te slagen, dubbel gecontroleerde kolomnamen, omgekeerde operatoren en nog veel meer. De twee WHERE's zijn identiek, respectievelijk; en de lengtegraadvariabelen verlopen netjes op basis van de feedback van de gegeven fout. Waar is Waldo dan? Dank je!

De fout:

Database query failed: 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 'long>=-93.497315 AND long<=-91.365967' at line 1

Oproepfunctie:

$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"] . ", ";}

Probleem functie:

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;
 }
0

1 antwoord

LONG is reserved word in MySQL.

Dus je moet de kolom naam citeren met een backtick:

$query .= " WHERE `long`>=" . $swLong . " AND `long`<=" . $neLong . " " ;
1
toegevoegd
Het werkte natuurlijk perfect. Heel erg bedankt poncha!
toegevoegd de auteur asobe, de bron