저는 지난 주 내에 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??
내 데이터베이스는 다음과 같습니다 : 모든 필드 (나는 유닉스 타임 스탬프로 날짜를 저장하고있어)의 INT로 저장됩니다
photo_id | user_id | rating | date
.
내가 피곤하고 무모하게 코딩 해요는, 일반적으로 나는 적어도 오류 메시지가 있다면 조금 더 얻을 수 (또는 아무것도!)하지만, 내가 할 데이터가 내가 var_dump($all_bayesian_info)
지금까지 반환하면 방법이 없습니다 수 0
어쩌면 이전 잘못입니까? – wildplasser