具有多年间隔的Mysql查询

时间:2013-07-09 13:53:20

标签: php mysql forms drop-down-menu

我创建了一些下拉框,允许用户缩小他们要查找的数据范围。其中两个下拉框涉及用户选择年份的位置。例如,第一个框可能是1990,第二个框可能是2000.现在如何设置允许应用此时间间隔的查询?

$pYear1 = the first year they select in the drop down box 
$pYear2 = the second year they select in the drop down box 

select * from table where year = '$pYear1 - $pYear2';

我尝试了这个,但它没有用。谁能帮我这个?

3 个答案:

答案 0 :(得分:1)

尝试使用BETWEEN

select * from table where year BETWEEN '$pYear1' AND '$pYear2';

更新:

@SylvainLeroux建议,出于性能和安全原因,强烈建议使用pdo或mysqli:

PDO Manual

MySQLi Manual

答案 1 :(得分:1)

正如我在评论中注意到的那样,你永远不应该在SQL查询中直接注入用户提供的值。

当您使用PHP时,首选的方法可能是使用预准备语句。这里我使用PDO(假设你的“年”是整数):

$sth = $dbh->prepare('* from table where year BETWEEN :start_year AND :end_year;');
$sth->bindParam(':start_year', $pYear1, PDO::PARAM_INT);
$sth->bindParam(':end_year', $pYear2, PDO::PARAM_INT);
$sth->execute();

这只是一个例子。有几种变体可供选择。见http://www.php.net/manual/en/pdostatement.execute.php

答案 2 :(得分:0)

或者如果您想要除日期之外的范围,您可以这样做。

select * from table where year > '$pYear1' and year < '$pYear2';