【问题标题】:Zend mysql fetchAll and countZend mysql fetchAll 和计数
【发布时间】:2012-05-02 19:28:14
【问题描述】:

我有以下 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`

如果我在 phpMyAdmin 中运行此查询,我会得到正确的结果,例如:

标识 |点击次数

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 时,在 phpMyAdmin 中运行 SQL 查询会返回几行。如上所述,对 Zend Framework 执行相同操作会返回零行。我想我通常做错了什么,但我不知道是什么。有人可以给我一个提示吗?

【问题讨论】:

  • 发布你的 $select (Zend_Db_Select) 查询对象
  • 对不起,伙计们 - 显然我上周工作太多 - 一切正常,直接在数据库中运行并通过 Zend 运行的 SQL 查询的结果是相同的 - 我连接我的应用程序错误数据库 - 无论如何感谢您的帮助:)

标签: php mysql zend-framework


【解决方案1】:

如果您尝试将字符串作为 SQL 传递,请尝试以下操作:

//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 对象来查询您的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多