php - solucion - sqlstate[42000]: syntax error or access violation: 1064 laravel
PDO Mysql Error de sintaxis 1064 (2)
Ejecuto el siguiente código:
$conn = new PDO(....);
.... pdo attributes ...
$limitvalue = 0;
$limit = 10;
$sql = $conn->prepare("SELECT * FROM table1 LIMIT ?, ?");
$sql->bindParam(1, $limitvalue, PDO::PARAM_INT);
$sql->bindParam(2, $limit, PDO::PARAM_INT);
$sql->execute();
Y consigo:
Excepción no detectada ''PDOException'' con el mensaje ''SQLSTATE [42000]: error de sintaxis o violación de acceso: 1064 Tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de ''NULL, 10'' en la línea 1 ''
Sucede solo con esta consulta en particular. Todo lo demás está bien.
Por cierto: sé que puede parecer estúpido que hago declaraciones preparadas para valores "dentro del código". Pero es solo un ejemplo. De hecho, los valores dependen del número de página, pero no importa aquí; esta consulta también ofrece el mismo error.
Si alguien está interesado, la versión de PHP es: 5.3.4RC2 y MySQL es: mysqlnd 5.0.7-dev - 091210 - $ Revisión: 304625 $
Esto parece ser un error de php : PDO ignora la constante PARAM_INT y usa las variables $limit
y $limitvalue
como cadena. Que se citan en la consulta cuando están vinculados.
Intenta usar:
$sql->bindParam(1, (int)$limitvalue, PDO::PARAM_INT);
$sql->bindParam(2, (int)$limit, PDO::PARAM_INT);
Para forzar el tipo de variables a int.
No creo que el primer parámetro del límite en sql pueda ser NULL. Si solo quiere los primeros 10 registros, use LIMIT 10.