Справка с SQL-запросом

Я ищу запрос SQLite, который будет возвращать значения, которые являются большими или меньше чем 0,014763 для СПГ и 0.008830 для lat. Я использую следующий код...

 $latupp = $_REQUEST['currlat'] + 0.008830; 
 $latlow = $_REQUEST['currlat'] - 0.008830;
 $lngupp = $_REQUEST['currlng'] + 0.014763;
 $lnglow = $_REQUEST['currlng'] - 0.014763;
 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp OR 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());

Но это возвращает неправильные результаты, например, больше результаты или меньше чем 0,1441209. Я не могу вполне выяснить почему. у кого-либо есть какие-либо предложения?

5
задан Donal Fellows 21 July 2010 в 09:52
поделиться

3 ответа

Возможно ...

 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp AND 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());
7
ответ дан 18 December 2019 в 16:35
поделиться

Попробуйте это.

$q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` >". $latlow. "AND
                             `lat` <". $latupp. "OR 
                             `lng` >".  $lnglow. "AND
                             `lng` <". $lngupp.";")
0
ответ дан 18 December 2019 в 16:35
поделиться

Это должно сработать:

 $latupp = $_REQUEST['currlat'] + 0.008830;  
 $latlow = $_REQUEST['currlat'] - 0.008830; 
 $lngupp = $_REQUEST['currlng'] + 0.014763; 
 $lnglow = $_REQUEST['currlng'] - 0.014763; 
 $q=mysql_query("SELECT * FROM `tweets`  
                       WHERE `lat` BETWEEN $latlow AND $latupp   
                             AND
                             `lng` BETWEEN  $lnglow AND $lngupp;") or die(mysql_error()); 

Возможно, вам нужны скобки, чтобы разделить первую и вторую части (не могу проверить это здесь).

Вы допустили небольшую ошибку, соединив ограничения широты и долготы оператором «ИЛИ». Ваша команда говорит:

Дайте мне все записи, которые имеют:

  • значение lat больше, чем $ latlow И ниже $ latupp, НЕ ВАЖНО, что длинное значение, оно имеет

ИЛИ

  • длинное значение больше $ lnglow И ниже $ lngupp НЕ ВАЖНО какой широте полученное значение

ИЛИ ОБЕ

5
ответ дан 18 December 2019 в 16:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: