Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/09/2013, 02:51
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: PDO prepare falla en consulta con LIMIT y signo de interrogacion

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
  1. $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
  1. // Enlazando parámetros
  2. $sql = "SELECT * FROM tabla WHERE cadena = :cadena";
  3. $sth = $db->prepare($sql);
  4. $sth->bindParam(':cadena', $cadena, PDO::PARAM_STR, 50);
  5. $sth->execute();
__________________
- León, Guanajuato
- GV-Foto