1 минута чтения
Тем не менее получается именно так.
Изменил строку $start = ($this->cur_page-1) * $this->page_size; на $start = abs(($this->cur_page-1) * $this->page_size); и стало все нормально.
Еще добавил метод для получения количества возвращенных строк, чтобы потом с ним работать.
public function get_total_rows() {
return $this->total_rows;
}