en estos casos no me preguntes bien el porque ya que fue una busqueda que había realizado en una ocasión que me paso lo mismo encontre esta solución
Código PHP:
Ver original$query = $pdo->prepare('SELECT * FROM tabla WHERE date_reg > :fecha LIMIT :inicio, :fin');
$query->bindValue(':fecha', '2012-08-01');
$query->bindValue(':inicio', 0, PDO::PARAM_INT);
$query->bindValue(':fin', 5, PDO::PARAM_INT);
$query->execute();
la explicación que encontraba es que cuando pasas el parametro con el ? por medio del array el te toma automáticamente el PDO::PARAM_STR y en el caso del LIMIT el esta esperando un entero PDO::PARAM_INT, saludos