PHP 和 MySQL 显示平均值

标签 php mysql arrays wordpress

好吧,我已经在互联网上搜索了几个小时试图解决这个问题,但我仍然完全迷失方向,所以非常欢迎一些帮助或指出正确的方向。

我有一个 MySQL 查询,我在其中计算列的平均值,这一切都很好。我在显示它时遇到了问题。

我已经转储了 $results 变量,它返回以下内容:

array(1) { [0]=> object(stdClass)#1826 (2) { ["page_id"]=> string(1) "5" ["avg(r_location)"]=> string(6) "4.0000" } } 

我从 echo $row... 得到的错误是:

Fatal error: Cannot use object of type stdClass as array

我的代码如下

function returnResults() {

    $postid = get_the_ID();

    global $wpdb;

    $results = $wpdb->get_results(" SELECT page_id, avg(r_location) FROM wp_ratings WHERE page_id = '$postid' ");

    var_dump($results);

    foreach ($results as $row) {
            echo $row['avg(r_location)'];

    }

}

最佳答案

Fatal error: Cannot use object of type stdClass as array

错误消息已告诉您一切。您正在尝试将对象用作数组。

由于结果是对象数组而不是数组,因此您需要向查询添加别名,如下所示:

$results = $wpdb->get_results("SELECT page_id, avg(r_location) average 
                               FROM wp_ratings 
                               WHERE page_id = '$postid'");

然后您可以访问每个值:

foreach($results as $row) {
  echo $row->average;
}

请注意,get_results() 采用第二个参数 $output_type 来控制返回值。要获取关联数组的结果,您可以添加 ARRAY_A 作为第二个参数:

$results = $wpdb->get_results("SELECT page_id, avg(r_location) average 
                               FROM wp_ratings 
                               WHERE page_id = '$postid'", ARRAY_A);

foreach($results as $row) {
  echo $row['average'];
}

在这种情况下,您实际上并不被迫添加别名。您可以像之前那样访问数组 echo $row['avg(r_location)'];

关于PHP 和 MySQL 显示平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525398/

相关文章:

php - 下拉列表中的 JSON 值显示 ID 号而不是数据库中的字符串

python - 无法通过python在phpMyAdmin中连接MySQL数据库

objective-c - 如何将 Core Data 数据放入数组数组中?与 Dave DeLong 的 CHCSVWriter 一起使用

php - 像stackoverflow这样的积分系统

php - 执行查询时出现问题(不在 GROUP BY 中)

php - 在mysql中存储IP地址?

c++ - C++ 中的 Matlab 类型数组

java - 防止请求在 JSON 文件更新时从 json 文件中获取数据

php - php判断字符串是否至少有一个字母、数字和特殊字符

java - 将所有可能的字符与星期几组合起来