En una sentencia SQL con parámetros, donde uso un parámetro en ORDER BY, sucede que no me utiliza el valor que luego le asigno con el método bindValue(). Estoy trabajando con la extensión PDO.
Les muestro el código:
Cita:
La cuestión es que al hacer la consulta y recuperar el conjunto de resultados no se ordena por el valor que tenga la variable $order (id, nombre, etc), sino por su valor por defecto. try{
$conn = new PDO("miDSN", "miUsuario", "miPassword");
$conn->setAttribute(PDO::ATTR_PERSISTENT, true);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//preparamos la sentencia
$sql = "SELECT * FROM " . MI_TABLA . " ORDER BY :order";
$st = $conn->prepare($sql);
$st->bindValue(":order", $order, PDO::PARAM_STR); //$order tiene el valor de un campo de la tabla y se le asigna al parámetro :order
$st->execute(); //ejecutamos la sentencia
}catch(PDOException $e){
die("Fallo la conexion a la base de datos: " . $e->getMessage());
}
$conn = new PDO("miDSN", "miUsuario", "miPassword");
$conn->setAttribute(PDO::ATTR_PERSISTENT, true);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//preparamos la sentencia
$sql = "SELECT * FROM " . MI_TABLA . " ORDER BY :order";
$st = $conn->prepare($sql);
$st->bindValue(":order", $order, PDO::PARAM_STR); //$order tiene el valor de un campo de la tabla y se le asigna al parámetro :order
$st->execute(); //ejecutamos la sentencia
}catch(PDOException $e){
die("Fallo la conexion a la base de datos: " . $e->getMessage());
}
Alguien sabe que sucede? Pues con otras cláusulas como WHERE o LIMIT no tengo problemas en agregar parámetros y obtener los resultados correctamente.
Saludos.