我有一个数据库,里面有一些已经售出的房产。他们每个人都有一个相关的日期,这就是我需要用来缩小搜索结果的范围。
基本上我有一个问题:
$query = "SELECT * from newsales WHERE city = '".$_GET['location']."'";
我需要做的是,从上述查询返回的结果来看,我需要进一步将其缩小到过去90天内。
所以它会找到这个城市,然后只需要得到过去90天的那些。如何组合SELECT语句来缩小结果范围?
谢谢!
您可以使用SQL AND
运算符。
文件:http://dev.mysql.com/doc/refman/5.1/en/logical-operators.html
您的查询将超过:
$query = "SELECT * from newsales WHERE city = '".$_GET['location']."' AND date > '".$oldestdate."';
将$date
设置为旧日期,在您的情况下为今天之前90天。根据mysql数据库中的日期格式,您必须在时间戳或日期时间中进行计算。
您不需要组合SELECT
语句,只需使用布尔AND
运算符制作一个更复杂的WHERE
子句:
$query = "
SELECT *
FROM newsales
WHERE
city = '".$_GET['location']."'
AND date > '".$oldestdate."'
";
我建议你也要阅读SQL注入——如果你像那样直接使用$_GET
,有些人可以访问你的网站,基本上输入他们想要的任何SQL语句。
假设您使用的是mysqli_*
函数(它已经取代了mysql_*
函数,但大多可以互换使用),最简单的方法是mysqli_real_escape_string()
,例如city = '" . mysqli_real_escape_string($_GET['location']) . "'
。
组合多个SELECT语句的结果意味着您需要使用UNION。请查看以下内容:http://dev.mysql.com/doc/refman/5.0/en/union.html
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);