Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/05/2011, 08:21
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: realizar consulta correctamente.

Código MySQL:
Ver original
  1. SELECT $distinct *
  2. FROM $posts
  3. WHERE post_date <= $nowlh  AND post_karma = $colno
  4. ORDER BY post_$orderby $limits
Esta te va a dar errores si $distinct contiene algo diferente a "DISTINCT, para lo cual ni siquiera tiene sentido ponerlo así. Sería muchísimo más fácil agregar eñ "DISTINCT" dinámicamente, y no con una variable.

Código MySQL:
Ver original
  1. FROM $tableposts
  2. WHERE post_date <= $nowlh  AND post_karma = $colno
  3. ORDER BY post_$orderby $limits
  4. LIMIT  ($page -1) * $arts , $arts
Esto te puede dar muchos problemas:
- LIMIT sólo admite valores enteros. No permite usar funciones, cálculos o variables locales (de SQL), sólo numeros enteros. Lo que se hace con PHP es agregar esos valores en la sentencia pero de forma tal que sólo queden números.
- Ese ORDER BY te dará error de sintaxis, porque estás poniendo dos variables cuyo valor sólo pueden ser el nombre de una columna, de un alias, una función de MySQL o un entero que representa la ubicación de la columna, pero como entre $orderby y $limits no has puesto ninguna coma, si no está generará un error de sintaxis (sin contar los que se pueden producir de acuerdo al contenido de esas variables, si están mal manejadas).

¿Por qué no te das una vuelta por las FAQs de PHP y te fijas cómo sugieren hacer este tipo de cosas? Hay cosas muy buenas allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/05/2011 a las 09:39