2012-04-21 45 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对象通过查询你的表。