构建包含between子句的动态查询


Building dynamic queries which contains between clause

我需要根据搜索条件在程序中生成动态查询。我通常使用以下方法。我需要添加一个between子句

$firstname = 'AAA';
$lastname = 'BBB';
$fromdate = '2015-01-01';
$todate = '2015-01-31';
$query = 'SELECT * FROM users';
$cond = array();
$params = array();
if (!empty($firstname)) {
    $cond[] = "firstname = ?";
    $params[] = $firstname;
}
if (!empty($lastname)) {
    $cond[] = "lastname = ?";
    $params[] = $lastname;
}
if (!empty($fromdate) && !empty($todate)) {
    // Here I need to add a between $fromdate AND $todate
}
if (count($cond)) {
    $query .= ' WHERE ' . implode(' AND ', $cond);
}
$stmt = $pdo->prepare($sql);
$stmt->execute($params);

是否有一种方法来添加between子句到这个代码?

在执行前添加子句。

if (count($cond)) {
    $query .= ' WHERE ' . implode(' AND ', $cond);
}
if (!empty($fromdate) && !empty($todate)) {
    $query .= ' col_field BETWEEN ? AND ?';
    $params[]= $fromdate;
    $params[]= $todate;
}
$stmt = $pdo->prepare($sql);
$stmt->execute($params);