Php 如何在Zend中获取查询结果

Php 如何在Zend中获取查询结果,php,mysql,zend-framework,average,Php,Mysql,Zend Framework,Average,我需要得到一个变量的平均分数。我正在使用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

我需要得到一个变量的平均分数。我正在使用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_分数
存储在其他一些表中。

尝试fetchPairs()而不是fetchAll()

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

同时删除数组索引中变量四舍五入的引号

echo $avg_score[$sid];
尝试fetchPairs()而不是fetchAll()

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

同时删除数组索引中变量四舍五入的引号

echo $avg_score[$sid];

您可以使用它来获取按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)"];

您可以使用它来获取按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)"];

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

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

$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(“按sid从markstable GROUP中选择sid、avg(分数));
Zend_debug::dump($avg_query)//与var_dump相同,但已包含标记
$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
第二个查询需要在数组中包含任何绑定值作为第二个参数:

$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
$avg_query=$db->query(“从markstable中选择sid、avg(分数),其中sid=?”,数组($sid);
Zend_debug::dump($avg_query);//与var_dump相同,但已包含标记
$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(“按sid从markstable组中选择sid、avg(分数));
Zend_debug::dump($avg_score);//与var_dump相同,但已包含标记
$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
在处理
Zend_Db
组件时,您可能会习惯在查询中使用占位符(
),因为在许多组件中,旧式语法已被弃用


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

您在尝试我是DB

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

$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(“按sid从markstable GROUP中选择sid、avg(分数));
Zend_debug::dump($avg_query);//与var_dump相同,但已包含标记
$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
第二个查询需要在数组中包含任何绑定值作为第二个参数:

$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
$avg_query=$db->query(“从markstable中选择sid、avg(分数),其中sid=?”,数组($sid);
Zend_debug::dump($avg_query);//与var_dump相同,但已包含标记
$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(“按sid从markstable组中选择sid、avg(分数));
Zend_debug::dump($avg_score);//与var_dump相同,但已包含标记
$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
在处理
Zend_Db
组件时,您可能会习惯在查询中使用占位符(
),因为在许多组件中,旧式语法已被弃用


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

您使用的是哪种Zend?Zf1还是Zf2?Whic你用的是?Zf1还是Zf2?在第二个例子中应该有一个等号。因为我还没有达到2k点,所以我无法编辑那些需要编辑的帖子,我想是“晚到总比不到好:”)在第二个例子中应该有一个等号。因为我还没有达到2k点,所以我不能编辑那些需要迟做总比不做好的帖子,我想:')