我创建了一些下拉框,允许用户缩小他们要查找的数据范围。其中两个下拉框涉及用户选择年份的位置。例如,第一个框可能是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';
我尝试了这个,但它没有用。谁能帮我这个?
答案 0 :(得分:1)
尝试使用BETWEEN
select * from table where year BETWEEN '$pYear1' AND '$pYear2';
更新:
@SylvainLeroux建议,出于性能和安全原因,强烈建议使用pdo或mysqli:
答案 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';