如何解决此错误:“未定义的变量:总和”?

时间:2019-10-13 09:16:09

标签: php mysql sql variables

我有一些代码可以对我的数据库(wodpress)中有关我的产品的用户的评分编号进行计数和求和,以显示对其他产品的平均评分,但我看到此错误:“ 注意:未定义的变量:求和”。
我认为如果数据库中没有评分编号,就会发生此错误。
我的朋友,我该怎么解决?

$sql = $wpdb->prepare( "
            SELECT meta_value 
            FROM {$wpdb->prefix}commentmeta 
            INNER JOIN {$wpdb->prefix}comments ON {$wpdb->prefix}commentmeta.comment_id = {$wpdb->prefix}comments.comment_ID 
            WHERE comment_post_ID = %d AND meta_key = 'rating' AND meta_value IS NOT NULL AND meta_value <> '' ", get_the_ID() 
        );
        $results = $wpdb->get_results( $sql );

        foreach($results as $result){
            $rate = $result->meta_value;
            $sum +=$rate;
        }
        $res = $sum/max( 1, count($results) );
        $res = number_format((float)$res,2,'.','');

2 个答案:

答案 0 :(得分:0)

 $sum = 0;
 $sql .... // rest of your code

先声明它,然后再开始使用它。您是第一次在循环中声明它,并在创建它的范围之外访问它。

在旧版本的PHP中它可以工作,但是在新版本中,它将给出此错误。

答案 1 :(得分:0)

我对wordpress不熟悉,但是也许可以帮到您。 如果$ result为0,则将除以0,这将导致错误。因此,我总是会首先询问它是否不等于0。此外,您可以执行该操作并直接在db中计数条目

$sql = $wpdb->prepare( "
    SELECT SUM(meta_value) as sum,
            COUNT(meta_value) as count
    FROM {$wpdb->prefix}commentmeta 
    INNER JOIN {$wpdb->prefix}comments ON {$wpdb->prefix}commentmeta.comment_id = {$wpdb->prefix}comments.comment_ID 
    WHERE comment_post_ID = %d AND meta_key = 'rating' AND meta_value IS NOT NULL AND meta_value <> '' ", get_the_ID() 
);
$results = $wpdb->get_results( $sql );

if($results->sum != 0 && $results->count != 0){
    $res = $results->sum/$results->count;
    $res = number_format((float)$res,2,'.','');
} else {
    $res = 0;
}