我有一个数据库,其中包含一些已售出的属性。它们每个都有一个与之关联的日期,这是我需要用来缩小搜索结果的范围。
基本上我有一个问题:
$query = "SELECT * from newsales WHERE city = '".$_GET['location']."'";
我需要做的是,从上面的查询返回的结果,我需要进一步缩小到过去90天内。
所以它会找到这个城市,然后它只需要获取过去90天内的城市。如何组合SELECT语句以缩小结果范围?
谢谢!
答案 0 :(得分:3)
您可以使用SQL AND
运算符。
Doc: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数据库中的dateformat,你必须在时间戳或日期时间计算它。
答案 1 :(得分:3)
您不需要组合SELECT
语句,只需使用布尔WHERE
运算符创建更复杂的AND
子句:
$query = "
SELECT *
FROM newsales
WHERE
city = '".$_GET['location']."'
AND date > '".$oldestdate."'
";
我也建议您read up on SQL injection - 如果您直接使用$_GET
,有人可以访问您的网站并基本输入他们想要的任何SQL语句。
最简单的方法是假设您正在使用mysqli_*
函数(已替换mysql_*
函数但可以互换使用)mysqli_real_escape_string()
,例如city = '" . mysqli_real_escape_string($_GET['location']) . "'
。 {{1}}。
答案 2 :(得分:-1)
组合多个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);