Php Zend选择数据,其中包含concat

Php Zend选择数据,其中包含concat,php,sql,zend-framework,Php,Sql,Zend Framework,有人能帮我修一下吗 我想在设置年份和月份时获取数据。 当我尝试使用whereconcat年份和月份选择数据时出现问题。 当我尝试在我的DB上运行sql查询时,但在Zend中出现错误: $db = Zend_Registry::get('db'); $select = $db->select() ->from(array('air'=>$this->_name), array('sumtotal' => ne

有人能帮我修一下吗

我想在设置年份和月份时获取数据。 当我尝试使用
where
concat年份和月份选择数据时出现问题。 当我尝试在我的DB上运行sql查询时,但在Zend中出现错误:

$db = Zend_Registry::get('db');

$select = $db->select()
            ->from(array('air'=>$this->_name), 
                array('sumtotal' => new Zend_Db_Expr('SUM(air.price) + SUM(inst.cicilan)')));
$select->joinLeft(array('s' => 'store'), 's.id = air.store_id');
$select->joinLeft(array('ar' => 'area'), 'ar.name = s.regional');
$select->joinLeft(array('inst' => 'installment'), 'inst.sn = air.sn');
$select->where('(air.status = ?', A);
$select->orwhere('air.status = ?', B);
$select->orwhere('air.status = ?', C);
$select->orwhere('air.status = ?', D);
$select->orwhere('air.status = ?', E);
$select->orwhere('air.status = ?', F);
$select->orwhere('air.status = ?', G);
$select->orwhere('air.status = ?', H);
$select->orwhere('air.status = ?', I);
$select->orwhere('air.status = ?', J);
$select->orwhere('air.status = ?)', K);
$select->where('ar.id = ?', $area);
$select->where('CONCAT(YEAR(air.date)-MONTH(air.date)) = ?', $year . '-' . $month );
$data = $db->fetchOne($select);
return $data;

您可能需要将concat包装到一个新的Zend_Db_Expr()中,除非代码将查找一个名为
concat(YEAR(air.date)-MONTH(air.date))的Db列。

另外,如果你想在年和月之间划一个短划线,那就是
CONCAT(年(air.date),'-',月(air.date))
(参见参数之间的comas?)


最后,这是ZF1,所以你可以做
die($select->assembly());
来帮助调试。

你得到了什么错误?没有错误报告。但是我没有得到现有数据的值。我得到了“NULL”。@theBluefox我认为语法遗漏了:$select->where('CONCAT(YEAR(air.date)-MONTH(air.date))=?,$YEAR.-$MONTH);因为当我写:$select->where('MONTH(air.date)=?',$MONTH)时,这就行了。。。。。