帮助SQL查询

时间:2010-06-28 10:17:26

标签: php sql sqlite

我正在寻找一个SQLite查询,它会为lng返回大于或小于0.014763的值,为lat返回0.008830。我正在使用以下代码...

 $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。我无法弄清楚原因。有人有什么建议吗?

3 个答案:

答案 0 :(得分:7)

...也许

 $q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` > $latlow AND
                             `lat` < $latupp AND 
                             `lng` >  $lnglow AND
                             `lng` < $lngupp;") or die(mysql_error());

答案 1 :(得分:5)

这应该有效:

 $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()); 

也许你需要括号来分隔第一和第二部分(不能在这里测试)。

通过使用“OR”连接lat和long约束,你犯了一点错误。你的命令说:

给我所有记录:

  • 大于$ latlow AND的lat值 低于$ latupp,无论如何 它有很长的价值

OR

  • 一个大于$ lnglow AND的长值 低于$ lngupp NO MATTER什么拉特 它有价值

或两个

答案 2 :(得分:0)

试试这个。

$q=mysql_query("SELECT * FROM `tweets` 
                       WHERE `lat` >". $latlow. "AND
                             `lat` <". $latupp. "OR 
                             `lng` >".  $lnglow. "AND
                             `lng` <". $lngupp.";")