繁体   English   中英

PDO动态参数绑定where子句AND日期之间

[英]PDO dynamic parameter binding where clause AND between dates

我有一个带有几个输入字段的搜索表单。 这些输入字段中有2个是日期。 如果用户填写“从/到”日期,则应显示从/直到该日期的所有记录。 如果用户给出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(); ?>

我找到了解决方案。

取消设置日期变量(例如, unset($searchTerms['fromDate'], $searchTerms['toDate']); ),然后在查询结束时再次添加它们。

if (isset($_GET['fromDate']) && !empty($_GET['fromDate'])) {
    $sql .= " AND Date >=:from_date";
}

希望这可以帮助其他人解决动态参数绑定问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM