Liebe Johanna,
$result = $statement->execute(array('limit' => 4, 'cat' => $cat,'limit' => $limit));
in Deinem array steht zwei mal der Index limit
, was dazu führt, dass der erste Wert überschrieben wird. Das mag jetzt nicht helfen, ist mir aber aufgefallen.
Liebe Grüße,
Felix Riesterer.