Autor Tema: ¿Que tiene de malo esta consulta?.  (Leído 392 veces)

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
¿Que tiene de malo esta consulta?.
« en: 10 de Octubre de 2012, 23:28:06 pm »
Hola,

Estoy haciendo un buscador y mediante LIKE de SQL puedo recoger aquellos registros que contengan el término de la búsqueda en los registros. Todo genial, puedo recopilarlos todos y a la hora de mostrar los resultados no tengo ningún problema. El problema viene con la paginación.

La consulta sin la paginación, que me funciona y me muestra todos los registros de golpe:
$hacer $cmd->Q("SELECT * FROM tabla WHERE campo LIKE '%".$termino."%'");

Consulta que hago para la paginación:
$hacer $cmd->Q("SELECT * FROM tabla WHERE campo LIKE '%".$termino."%' ORDER BY id DESC LIMIT ".$inicio",".$tamano);

---------------

Sustituyendo las variables y probando las consultas en la base de datos manualmente me arroja un error de que tengo un problema en la línea 1 a partir de ORDER BY id...
El problema no viene con la paginación ya que uso el mismo código y con otras consultas simples, como la primera expuesta antes me funciona genial

¿Alguien me echa una mano? ;-).

Un saludo,
Siquillote.

#Fdo. Physlet

Comunidad PHPeros

¿Que tiene de malo esta consulta?.
« en: 10 de Octubre de 2012, 23:28:06 pm »

Desconectado LuisOrozco

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 6
  • Sexo: Masculino
  • Incipiente Software Developmenet Manager
    • Ver Perfil
Re:¿Que tiene de malo esta consulta?.
« Respuesta #1 en: 12 de Octubre de 2012, 04:18:08 am »
¿Esa consulta generada es para un servidor MySQL? Me sucedió hace años que quise meter una consulta hecha para MySQL en un servidor PostgreeSQL y lanzaba error, el problema era no se usaba la coma para definir el límite, se usa offset .. Pero bueno, sería mejor que pusiera la consulta SQL generada para verla. Un consejo; trata de estructurar bien tu código SQL, sobre todo para estos casos de debugeo, MySQL es limitado, no te dice donde exactamente está el error, solo la linea, por eso mas conveniente usar algo asi:

Código: [Seleccionar]
SELECT
     *
FROM
       tabla
WHERE
         campo LIKE '%".$termino."%'
ORDER BY
        id
DESC LIMIT ".$inicio. ",".$tamano

Saludos.
Un día se me ocurrió nacer... y lo hice.