【问题标题】:How to fetch the result of a query in Zend如何在 Zend 中获取查询结果
【发布时间】:2013-03-15 08:52:15
【问题描述】:

我需要在变量中获取平均分数。我正在使用zend,我尝试了两个查询,但都没有工作:

$avg_query = $db->query("SELECT sid, AVG(score) 
                         FROM markstable GROUP BY sid");

$avg_query = $db->query("SELECT sid, AVG(score) 
                         FROM markstable WHERE sid = '$sid'");

$avg_score = $db->fetchAll($avg_query);
echo $avg_score; gives nothing
echo $avg_score['$sid']; gives nothing

我需要将avg_score 存储在其他表中。

【问题讨论】:

  • 您使用的是哪个 Zend? Zf1 还是 Zf2?

标签: php mysql zend-framework average


【解决方案1】:

您可以使用它来获取按 sid 分组的平均值。

$avg_score = $db->fetchAll("SELECT sid,AVG(score) FROM st GROUP BY sid");

foreach($avg_score as $row) {
    echo $row["sid"]."  ".$row["AVG(score)"];
}

如果是第二次查询:

$avg_score = $db->fetchRow("SELECT sid,AVG(score) FROM st where sid=1");
echo $avg_score["AVG(score)"];

【讨论】:

  • 第二个例子应该有等号。由于我还没有达到 2k 点,所以我无法编辑需要编辑
  • 迟到总比没有好:')
【解决方案2】:

尝试 fetchPairs() 而不是 fetchAll()

编辑:Zend_Db 确实有一个 fetchPairs();

http://framework.zend.com/manual/1.12/en/zend.db.adapter.html#zend.db.adapter.select.fetchpairs

同时从数组索引中的变量中删除引号

echo $avg_score[$sid];

【讨论】:

    【解决方案3】:

    您在尝试查询数据库时混合了语法。

    query() 方法构建并执行所需的查询。您的第一个查询应该返回结果,无需提供任何进一步的代码:

    $avg_query = $db->query("SELECT sid, AVG(score) FROM markstable GROUP BY sid");
    Zend_debug::dump($avg_query);//same as var_dump but already includes <pre> tags
    

    您的第二个查询需要包含数组中的任何绑定值作为第二个参数:

    $avg_query = $db->query("SELECT sid, AVG(score) FROM markstable WHERE sid = ?", array($sid);
    Zend_debug::dump($avg_query);//same as var_dump but already includes <pre> tags
    

    您也可以使用标准的 fetch 方法执行此查询,只需将 SQL 作为字符串传递:

    $avg_score = $db->fetchAll("SELECT sid, AVG(score) FROM markstable GROUP BY sid");
    Zend_debug::dump($avg_score);//same as var_dump but already includes <pre> tags
    

    在处理Zend_Db 组件时,您不妨习惯在查询中使用占位符 (?),因为旧式语法在许多组件中已被弃用。

    这可能不是您正在做的最好的解决方案。但是,它确实回答了您的问题。 Zend Framework 中有很多与数据库交互的方法,使用Zend_Db_Adapter 组件和方法通常不是完成任务的最佳方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      相关资源
      最近更新 更多