2016-09-14 91 views
0

添加了從我的結果中添加所有評級的功能。pdo php addison與來自同一字段的存儲變量

好吧,我有一張名爲「收視率」的表格,在表格中它是這樣放置的。

 ID | UserID | Rating | TMDB | TYPE 
    ----------------------------------- 
    1  34  6  432  3 
    ----------------------------------- 
    2  34  9  432  3 

我的SQL是

$sql = "SELECT * FROM `tbl_rating` WHERE `tmdb`='" . $tmdb . "' AND `type`='" . $type . "' "; 

確定此拉起我想要的信息。我現在可以使用while或foreach命令來調用$ row ['rating']。然而,我不知道如何將結果添加到數據庫或做任何基本的數學運算。這是一個電影評級數據庫,我試圖讓我的腳本在結果列中添加所有「評級」,然後計算出平均投票數。

我希望這樣做。任何幫助將非常感謝大家!

此腳本具有Gore,Scare,Acting,Story(這是我使用類型字段的地方)的星級。

+0

您有什麼問題?只需使用標準的數學運算符,如'+'和'/'。 '$ total_rating = $ total_rating + $ row ['rating']'。 – Barmar

+0

您也可以使用像SUM()和AVG()這樣的MySQL聚合函數,而不是在腳本中執行它。 – Barmar

+0

我不能使用$ row ['rating'] + $ row ['rating']它是相同的字段,我唯一能想到的方法是$ row [1] ['rating'] + $ row [2] ['rating ']但是一定有更好的辦法?我想一個計數器可能在$行[$ counter] [rating]中工作? –

回答

0

添加到包含總數的變量中。

$total_rating = 0; 
$rating_count = 0; 
while ($row = $stmt->fetch()) { 
    $total_rating += $row['rating']; 
    $rating_count++; 
} 
if ($rating_count > 0) { 
    $avg_rating = $total_rating/$rating_count; 
} else { 
    $avg_rating = 0; 
} 

你也可以只做到這一點查詢:

$sql = "SELECT AVG(rating) AS avg_rating FROM `tbl_rating` WHERE `tmdb`= :tmdb AND `type`= :type "; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(':tmdb', $tmdb); 
$stmt->bindParam(':type', $type); 
$stmt->execute(); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
$avg_rating = $row['avg_rating']; 
+0

再次感謝A ++++ :) –

+0

我覺得寫這樣一個答案真的很無聊,它是計算機編程101. – Barmar

+0

我知道有時候我在更容易的東西上掙扎。我學習,因爲我去...現在我只需要弄清楚如何顯示前5名gorey電影(類型:2)大聲笑 –