0

我有一个数据库搜索来根据所选条件显示结果,其中一个条件是日期范围,再加上 3 个其他条件。搜索效果很好,我只能按日期范围搜索以显示所有结果,或者我可以搜索日期范围并添加 1、2 或所有 3 个其他变量..但是,如果我离开日期范围,则不会显示任何结果。使用 mysql 数据库。

Search page::

$term1 = $_REQUEST['term1'];
$term2 = $_REQUEST['term2'];
$term3 = $_REQUEST['term3'];
$term4 = $_REQUEST['term4'];
$term5 = $_REQUEST['term5'];

$terms= '&term1='.$term1 . '&term2='.$term2 . '&term3='.$term3 . '&term4='.$term4 . '&term5='.$term5;

$limit=15;

$sql ="SELECT * FROM ircb WHERE cdate BETWEEN '$term2' AND '$term3' AND staff  LIKE '%$term1%'  AND item LIKE '%$term4%' AND service LIKE '%$term5%' ORDER BY id DESC LIMIT $start_from, 15";


$rs_result = mysql_query ($sql);
$num_rows = mysql_num_rows($rs_result);
$query = mysql_query("SELECT * FROM ircb WHERE cdate BETWEEN '$term2' AND '$term3' AND staff  LIKE '%$term1%'  AND item LIKE '%$term4%' AND service LIKE '%$term5%'"); 
$number=mysql_num_rows($query); 

第 2 学期和第 3 学期是从日期选择器输入的日期范围条款,并以正确的格式 000-00-00,我认为问题是 WHERE 语句谢谢

4

1 回答 1

0

是的,这将是问题所在。理想情况下,如果日期未设置或为 0000-00-00,您将设置日期字符串的默认值以涵盖所有可能的日期。

例如:

if((!isset($_REQUEST['term2'])) OR ($_REQUEST['term2'] == '0000-00-00')) {
    $term2 = '1970-01-01';
}
if((!isset($_REQUEST['term3'])) OR ($_REQUEST['term3'] == '0000-00-00')) {
    $term3 = date("Y-m-d");
}

因此,如果未设置日期条款,它将使用跨越指定日期范围(直到当前日期)的默认值。

于 2012-12-11T13:22:57.350 回答