我有一些代码可以对我的数据库(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,'.','');
答案 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;
}