Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

realizar consulta correctamente.

Estas en el tema de realizar consulta correctamente. en el foro de Mysql en Foros del Web. estoy haciendo un script en php, pero estoy atorado en la forma de hacer la consulta mysql. Basícamente estoy tratando de adaptar un script de ...
  #1 (permalink)  
Antiguo 06/05/2011, 21:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 15 años
Puntos: 1
realizar consulta correctamente.

estoy haciendo un script en php, pero estoy atorado en la forma de hacer la consulta mysql. Basícamente estoy tratando de adaptar un script de paginación.

en el script original se plantea la siguiente consulta

Código MySQL:
Ver original
  1. $limite= 'SELECT * FROM '.$GLOBALS['DB_TBL'].' LIMIT '. ($page -1) * $arts . ',' .$arts;

sin embargo, yo requiero hacerla mucho más especifica, no a la tabla en general.

La consulta ya la tengo, pero no se como fusionarla con la consulta del script original.


esta es la consulta especifica que quiero fusionar con la consulta original del script

Código MySQL:
Ver original
  1. $limite = "SELECT $distinct * FROM $posts WHERE post_date <= $nowlh  AND post_karma = $colno ORDER BY post_$orderby $limits ";

He intentado la siguiente consulta, pero me marca problemas en el uso de LIMIT,

Código MySQL:
Ver original
  1. $limite= "SELECT $distinct * FROM $tableposts WHERE post_date <= $nowlh  AND post_karma = $colno ORDER BY post_$orderby $limits LIMIT  ($page -1) * $arts , $arts";


Alguien podría ayudarme.

Gracias!!
  #2 (permalink)  
Antiguo 07/05/2011, 08:21
Avatar de 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
  #3 (permalink)  
Antiguo 07/05/2011, 09:34
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 15 años
Puntos: 1
Respuesta: realizar consulta correctamente.

gracias.

tienes razon, el problema esta en las variables php que introduzco en la consulta.

voy a checar de nuevo mi scrpit.

saludos.

Etiquetas: correctamente, realizar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:40.