我正在寻找一个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.我无法弄清楚原因.有没有人有什么建议?
也许...
$q=mysql_query("SELECT * FROM `tweets` WHERE `lat` > $latlow AND `lat` < $latupp AND `lng` > $lnglow AND `lng` < $lngupp;") or die(mysql_error());
这应该工作:
$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约束,你犯了一个小错误.你的命令说:
给我所有记录:
一个lat值大于$ latlow且低于$ latupp,NO MATTER它的长值
要么
一个大于$ lnglow的长值且低于$ lngupp NO MATTER它的lat值是多少
或两者