A vue d'oeil, je dirais que le problème vient de la clause LIMIT.
Quand tu passes des valeurs dans un tableau à la méthode PDOStatement:execute() il considère celles-ci comme étant de type "string".
La clause LIMIT demande une valeur de type integer.
Pour ne plus avoir de bug, tu dois passer par la méthode bindValue() en indiquant le type integer en 3éme paramètre avec la constante de classe PDO::PARAM_INT.
Remplace la ligne 7 (du pastebin) par ceci :
$req4->bindValue('topicId', $_GET['topic'], PDO::PARAM_INT);
$req4->bindValue('page', $offsetIs, PDO::PARAM_INT);
$req4->execute();
---
@Shifudarkiron : "utilisé un framework" n'est pas la réponse à tout les problèmes.