1- PDO prepare usando signos de interrogación trata todas las variables como si fueran cadenas, por lo que usará comillas para delimitar el valor
2- No debes encerrar entre comillas los valores para LIMIT y OFFSET porque deben ser numéricos
3- Puedes hacerlo con :alias para cada valor, o bien, integrar directamente los valores en la consulta, ejemplo:
Código PHP:
Ver original$consulta = "SELECT * FROM producto WHERE idCategoria = ? AND idProducto > ? LIMIT $offset, $limite";
Teóricamente, no hay riesgos en hacerlo así, ya que se supone que eres tú quien controla y verifica que esos valores sean numéricos y estén dentro del rango permitido.
nelsonpk, de acuerdo, usar etiquetas es la mejor forma de trabajar en PDO, pero con bindParam(), donde puedes especificar tipo y longitud del dato:
Código PHP:
Ver original// Enlazando parámetros
$sql = "SELECT * FROM tabla WHERE cadena = :cadena";
$sth = $db->prepare($sql);
$sth->bindParam(':cadena', $cadena, PDO::PARAM_STR, 50);
$sth->execute();