2012-04-21 46 views
1

我有以下SQL查詢:的Zend MySQL的使用fetchall和計數

SELECT `ka`.`id`, COUNT(kk.id) AS `clicks` FROM `karriere_anzeige` AS `ka` LEFT JOIN `karriere_klicks` AS `kk` ON `ka`.`id` = `kk`.`id_anzeige` WHERE (ka.id_kunde = '616') GROUP BY `ka`.`id` 

如果我在phpMyAdmin運行此查詢,我得到正確的結果,f.e:

ID | clicks

4803 | 75

4822 | 144

然而這種嘗試:

$rowset = $db->fetchAll($select); 

返回該行集:

array(2) { 
    [0] => array(2) { 
     ["id"] => string(4) "4803" 
     ["clicks"] => string(1) "0" 
    } 
    [1] => array(2) { 
     ["id"] => string(4) "4822" 
     ["clicks"] => string(1) "0" 
    } 
} 

$ DB是Zend_Db_Adapter_Pdo_Mysql對象

當我做INNER JOIN代替LEFT JOIN,運行SQL查詢在phpMyAdmin中返回幾行。如上所述,在Zend Framework中執行相同的操作會返回零行。我想我通常做錯了什麼,但我無法弄清楚它是什麼。有人可以給我一個提示嗎?

+0

發表您的$ select(Zend_Db_Select)查詢對象 – 2012-04-21 17:43:03

+0

對不起 - 我上週顯然工作太多 - 一切正常,SQL查詢直接在數據庫和Zend中運行的結果是一樣的 - 我是連接我的應用程序與錯誤的數據庫 - 無論如何感謝幫助:) – Okizb 2012-04-23 07:05:56

回答

0

,如果你正試圖將字符串傳遞作爲SQL嘗試somethng這樣的:

//This assumes access from a controller/action 
$db = Zend_Db_Table::getDefaultAdapter(); 
$sql = "SELECT `ka`.`id`, COUNT(kk.id) AS `clicks` FROM `karriere_anzeige` AS `ka` LEFT JOIN `karriere_klicks` AS `kk` ON `ka`.`id` = `kk`.`id_anzeige` WHERE (ka.id_kunde = '616') GROUP BY `ka`.`id`"; 
$stmt = new Zend_Db_Statement_PDO($db, $sql); 
$stmt->execute(); 

你也可以建立一個Zend_Db_Select對象通過查詢你的表。