簡體   English   中英

PHP和MySQL顯示平均值

[英]PHP & MySQL display average

好的,所以我已經花了數小時試圖解決此問題,但是我仍然迷失了方向,非常歡迎您提供幫助或朝正確的方向發展。

我有一個MySQL查詢,在這里我可以計算出一列的平均值。 在顯示它是我遇到問題的地方。

我轉儲了$ results變量,它返回以下內容:

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

我也從echo $row...得到的錯誤是:

致命錯誤:不能將stdClass類型的對象用作數組

我的代碼如下

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)'];

    }

}

致命錯誤:不能將stdClass類型的對象用作數組

錯誤消息告訴您一切。 您試圖將一個對象用作數組。

由於結果是對象數組而不是數組,因此您需要像這樣向查詢添加別名:

$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)'];之前一樣訪問數組echo $row['avg(r_location)'];

首先更正您的查詢:

SELECT page_id, avg(r_location) as locat FROM wp_ratings WHERE page_id = '$postid'  

然后像這樣訪問它:

foreach($result as $row){
 $row->locat;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM