我試圖通過MySQL和PHP在上週獲得最高評價的照片。我發現貝葉斯公式可能是我需要的,但我一直在搞這個無濟於事。貝葉斯算法返回0
以下代碼不返回任何錯誤,它只返回單個'0'。爲什麼這是我沒有絲毫的。
$bayesian_algo = "SELECT
photo_id,
(SELECT count(photo_id) FROM photo_ratings)/
(SELECT count(DISTINCT photo_id) FROM photo_ratings) AS avg_num_votes,
(SELECT avg(rating) FROM photo_ratings) AS avg_rating,
count(photo_id) as this_num_votes,
avg(rating) as this_rating
FROM photo_ratings
WHERE `date` > '$timeframe'
GROUP BY photo_id";
$bayesian_info = $mysqli->query($bayesian_algo);
$all_bayesian_info = array();
while($row=$bayesian_info->fetch_assoc()) array_push($all_bayesian_info,$row);
list($photo_id,$avg_num_votes,$avg_rating,$this_num_votes,$this_rating) = $all_bayesian_info;
$photo_id = intval($photo_id);
$avg_num_votes = intval($avg_num_votes);
$avg_rating = intval($avg_rating);
$this_num_votes = intval($this_num_votes);
$this_rating = intval($this_rating);
$bayesian_result = (($avg_num_votes * $avg_rating) + ($this_num_votes * $this_rating))/($avg_num_votes + $this_num_votes);
echo $bayesian_result; // 0??
我的數據庫看起來是這樣的:
photo_id | user_id | rating | date
所有字段存儲爲int(我存儲日期作爲UNIX時間戳)。
我累了,硬拼編碼,通常我至少可以得到一個遠一點,如果有錯誤信息(或任何東西!),但沒有辦法,我得到的數據,如果我var_dump($all_bayesian_info)
將永遠返回0
也許你以前錯了? – wildplasser