[英]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.