2014-12-29 5 views
-1

im пытается создать систему обзора для моего сайта, я хочу получить среднее число из моих последних 5 обзоров, первая часть отлично работает, если я удалю AVG, я не получаю ошибку, просто значение последнего числа, которое я ввел в базу данных. как только я добавлю AVG, он дает мне Undefined index: rating line 23?не может заставить MYSQL AVG работать

любая помощь будет принята с благодарностью
Heres код:

// collect 5 lastest reviews for viewing 
$reviews = ""; 
    $sqli = mysqli_query($conn, "SELECT review, reviewer_name, review_date FROM reviews WHERE review_id='$id' ORDER BY review_date DESC LIMIT 5"); 
    $reviewCount = mysqli_num_rows($sqli); // count the output amount 
    if($reviewCount > 0) { 
     //get all the product details 
     while($row = mysqli_fetch_array($sqli)){ 
     $review = $row["review"]; 
     $reviewer_name = $row['reviewer_name']; 
     $review_date = $row['review_date']; 
     $reviews .= ''.$review.''.$reviewer_name.''.$review_date.'<br />'; 
     } 
} 
$rating = ""; 
$test = mysqli_query($conn, "SELECT AVG(rating) FROM reviews WHERE review_id='$id' ORDER BY review_date DESC LIMIT 5"); 
$ratingCount = mysqli_num_rows($test); // count the output amount 
    if($ratingCount > 0) { 
     while($row = mysqli_fetch_array($test)){ 
      $rating = $row["rating"]; 
     } 
} 
+0

Что такое линия 23? –

+0

$ rating = $ row ["rating"]; – lugreen

ответ

1

У вас нет столбца с именем rating на выходе. Использование псевдонима столбца:

SELECT AVG(rating) as rating 
FROM reviews 
WHERE review_id = '$id'; 

Обратите внимание, что order by и limit бесполезны, так как агрегация запроса без group by возвращает только одну строку.

Смежные вопросы