2011-08-31 83 views
0

我正在运行一个自定义查询,没有模型参与,它返回一个空数组。zend框架中的查询返回空数组

这里是我使用确切的代码:

$query = 'SELECT SUM(open_diff) opens, SUM(revenue_diff) revenue, SUM(revenue) real_rev, manual_rev, SUM(opens) actual_opens 
         FROM data.discrepancy 
         WHERE discrepancy_date >= \''.$dateStart.'\' AND discrepancy_date <= \''.$dateEnd.'\' AND feed_id = '.$feeds[$i]["feed_id"]; 

       $db = Zend_Registry::get('db_slave'); 
       $stmt = $db->query($query); 

       $records = $stmt->fetchAll(); 


Zend_Debug::dump($records); gets me this result: 

array(1) { 
[0] => array(5) { 
["opens"] => NULL 
["revenue"] => NULL 
["real_rev"] => NULL 
["manual_rev"] => NULL 
["actual_opens"] => NULL 
} 
} 

的数据是在数据库中,如果我直接在MySQL运行该查询,我没有问题。

请指教。

回答

2

如果没有匹配的记录,MySQL将为sum()返回null。什么是最终查询正在执行(与评估变量)?

我想尝试在MySQL中直接运行,你可能会得到相同的结果。

var_dump($dateStart, $dateEnd, $feeds[$i]['feed_id']); 

看看那些包含什么,你可能会看到问题。

+0

或'的var_dump($查询)' –

+0

右键 - 看到这些值的实际类型的可使用的为好。 –

+0

变量评估得很好,我直接在数据库中运行结果查询并获取结果。另外,我删除了SUM并留下真正的列来选择...仍然是空阵列 – Will22

0

尝试下面的代码

$dbAbstract = new Zend_Db_Table_Abstract(); 

$select = $dbAbstract->select() 
    ->from(
      array('a' => 'data.discrepancy'), 
      array('SUM(open_diff) AS opens', 'SUM(revenue_diff) AS revenue'), 'SUM(revenue) AS real_rev', 'SUM(opens) AS actual_opens' 
    ) 
    ->where('discrepancy_date >=?', $dateStart) 
    ->where('discrepancy_date <=?', $dateEnd) 
    ->where('feed_id =?', $feeds[$i]["feed_id"]); 

$result = $dbAbstract->fetchAll($select); 

请删除,因为这是不工作

+0

form()应该从() –

+0

ok。谢谢。我会改变它。 –