0

我创建了一些下拉框,允许用户缩小他们正在寻找的数据的范围。其中两个下拉框涉及用户选择年份的位置。例如,第一个框可能是 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';

我试过这个,但没有用。谁能帮我这个?

4

3 回答 3

1

尝试使用BETWEEN

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

更新:

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

PDO 手册

MySQLi 手册

于 2013-07-09T13:56:34.367 回答
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

于 2013-07-09T14:06:12.767 回答
0

或者,如果您想要不包括日期的范围,您可以这样做。

select * from table where year > '$pYear1' and year < '$pYear2';
于 2013-07-09T14:09:03.403 回答