¿Utilizar consulta preparada con ORDER BY?

  • Autor Autor xcodex
  • Fecha de inicio Fecha de inicio
X

xcodex

Hola!, quizás a alguien ya le pasó, que intente realizar:
PHP:
<?php
    $consulta = $pdo->prepare("SELECT * FROM table WHERE active = :active ORDER BY :getvariable DESC");
    $consulta->bindParam(':active', $active, PDO::PARAM_INT);
    $consulta->bindParam(':getvariable', $getvariable, PDO::PARAM_STR);
.
.
.
?>

Es solo una parte de la consulta por supuesto, por lo que estuve buscando no hay manera de que eso funcione, pero hay quienes dicen que SI les funciona jaja.
¿Se podría realizar?
 
Eso no funciona. Porque el parametro lo interpreta como un valor, es como si pusieras ORDER BY 'campo`, entre comillas. Habria que probar si le metes un numero. Ahi calculo que funcionaria.
 
Eso no funciona. Porque el parametro lo interpreta como un valor, es como si pusieras ORDER BY 'campo`, entre comillas. Habria que probar si le metes un numero. Ahi calculo que funcionaria.
¿Te refieres a que en lugar de id la columna se llame, por ejemplo, 1?
 
¿Te refieres a que en lugar de id la columna se llame, por ejemplo, 1?
En lugar del nombre le pones el orden en el que aparecen en el select. Por ejemplo si pones select id, nombre y queres ordenar por nombre le pones order by 2.
 
Hola

Lo que tienes que poner es el parametro en concreto --> $getvariable

Y de esta manera interpreta la variable en la sentencia.
 
En lugar del nombre le pones el orden en el que aparecen en el select. Por ejemplo si pones select id, nombre y queres ordenar por nombre le pones order by 2.

Sorprendido por esto.
Funcionó 😎, no sabía que se podía poner con números, es mas, creo que en ningún lado aparece eso.
Esperemos que siga funcionando.
 
esa variable puede ser el nombre del campo o su ID
 
para evitar errores o confusiones, siempre es mejor usar el nombre del campo, ya que si en un futuro modificas tu tabla añadiendo más columnas, puedes tener complicaciones 🙂
 
Sorprendido por esto.
Funcionó 😎, no sabía que se podía poner con números, es mas, creo que en ningún lado aparece eso.
Esperemos que siga funcionando.

Acepta el orden del campo segun esta en el select ojo con eso, si en la tabla tenes id , nombre pero en el select pones select nombre, id y haces order by 1 te ordena por el nombre. Y con respecto a que no te funcionaba es como te decia, cuando el parametro es string el prepare te agrega comillas por eso no te andaba, en el caso de numeros no le mete comillas entonces ahi si te funciona.
 
Atrás
Arriba