我正在寻找一个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。我无法弄清楚原因。有人有什么建议吗?
答案 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约束,你犯了一点错误。你的命令说:
给我所有记录:
OR
或两个
答案 2 :(得分:0)
试试这个。
$q=mysql_query("SELECT * FROM `tweets`
WHERE `lat` >". $latlow. "AND
`lat` <". $latupp. "OR
`lng` >". $lnglow. "AND
`lng` <". $lngupp.";")