我有一个包含多个输入字段的搜索表单。其中2个输入字段是日期。如果用户填写了“从/到”日期,则应显示该日期之前/之后的所有记录;如果用户提供2个日期,则应显示这两个日期之间的所有记录。
这是我对其他输入字段的工作代码,但我不知道如何实现日期约束。参数绑定应保持动态,因为我们不知道用户将搜索多少变量。
<?php $this->databaseConnection();
$sql = 'SELECT * FROM trips t';
$searchTerms = array_filter($_GET);
$whereClause = array();
foreach($searchTerms as $key=>$value)
{
//Push values to array
array_push($whereClause, "t." . $key . "=:" . $key);
}
if(!empty($whereClause))
{
$sql .= " WHERE " . implode(" AND ", $whereClause);
}
if($this->databaseConnection()) {
$query_search_data = $this->db_connection->prepare($sql);
foreach($searchTerms as $key=>$value)
{
$query_search_data->bindValue(':' . $key, $value);
}
$query_search_data->execute();
$result = $query_search_data->fetchAll(); ?>
答案 0 :(得分:1)
我找到了解决方案。
取消设置日期变量(例如unset($searchTerms['fromDate'], $searchTerms['toDate']);
)并在查询结尾再次添加它们。
if (isset($_GET['fromDate']) && !empty($_GET['fromDate'])) {
$sql .= " AND Date >=:from_date";
}
希望这可以帮助其他人解决动态参数问题。