$cmd = $pdo->prepare("SELECT * FROM tabela limit :inicio , :final");
$cmd->bindValue(":inicio",$inicio);
$cmd->bindValue(":final",$final);
O problema esta na primeira linha, pois se substituir :inicio e :final pelas suas variáveis a pesquisa acontece corretamente.
Alguma solução?