Zend Framework DB_TABLE中的mySQL语句

时间:2013-01-16 09:54:13

标签: php mysql zend-framework zend-db

在这种情况下,我想知道如何使用ZEND正确编写mySQL语句:

SELECT * FROM `users` WHERE role_id = 2 AND status = 2 AND bddate BETWEEN '1988-05-07' AND '1991-01-01' ORDER BY lastname DESC

我会有if语句,例如。如果在过滤器用户中选择了role_id,我会将它包含在WHERE等中,与其余部分相同。

到目前为止,我有1个WHERE条件,我已经这样做了(现在我需要更复杂的一个):

    $select = $this->select()
            ->setIntegrityCheck(false)
            ->from(array('u'=>'users'))
            ->join(array('r'=>'user_roles'), 'u.role_id = r.role_id', array('role'=>'title'));          
    if(count($filters) > 0) {
        foreach($filters as $field => $filter) {
            $select->where($field . ' = ?', $filter);
        }
    }

    if(null != $sortField) {

        $select->order($sortField);

    }

1 个答案:

答案 0 :(得分:3)

好的,所以你遇到了BETWEEN的问题。有两种可能的解决方案:

a)你使用两个where子句来分割BETWEEN,所以你得到了

$select = $this->select()
//... other conditions
    ->where('bddate >= ?', '1988-05-07')
    ->where('bddate <= ?', '1991-01-01');

OR

b)

$select = $this->select()
//... other conditions
    ->where ('bddate BETWEEN '1988-05-07' AND '1991-01-01');

我会建议选项a),因为它正确地逃避了你的价值观。