php PG_fetch_array / assoc返回false

I am converting my code from Mysql to PostgreSql and I encountered problem while doing fetch query. Could you please explain me why it returns false for each row ?

if($_GET['type']==2){
$return=array();
$first=1;
    $limit= pg_fetch_assoc(pg_query($connection, "SELECT COUNT(*) FROM student"));
    while($first<=$limit['count']){
         //array_push($return, pg_fetch_assoc(pg_query($connection, "SELECT st.id as id,
         $fetcher= pg_fetch_assoc(pg_query($connection, "SELECT st.id as id,
                                (round(avg(m.score),1)+round(avg(s.score),1)+round(avg(dm.score),1)+round(avg(e.score),1)+round(avg(pr.score),1)) as total_score,
                                            st.name as name,
                                            st.surname as surname,
                                            st.class as class,
                                            2 as info_type,
                                            st.missed_lessons as missed_lessons,
                                            round(avg(m.score),1) as avgm,
                                            round(avg(s.score),1) as avgs,
                                            round(avg(dm.score),1) as avgdm,
                                            round(avg(e.score),1) as avge,
                                            round(avg(pr.score),1) as avgpr
                                                 FROM student st
                                         RIGHT JOIN math m ON st.id=m.student_id
                                         RIGHT JOIN sport s ON st.id=s.student_id
                                         RIGHT JOIN database_managment dm ON st.id=dm.student_id
                                         RIGHT JOIN english e ON st.id=e.student_id
                                         RIGHT JOIN programming pr ON st.id=pr.student_id WHERE st.id=".$first." GROUP BY st.id"));
        $first++;
        echo json_encode($fetcher);
     }
    //echo json_encode($return);

}