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