Ver Mensaje Individual
  #15 (permalink)  
Antiguo 18/02/2013, 09:17
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, 3 meses
Puntos: 2658
Respuesta: Error SQL syntaxis al realizar una búsqueda

No.
Estoy hablando de la consulta en SQL, que es lo que MySQL recibe.
Más allá de que la creación dinámica de las sentencias puede plantear problemas, la principal fuente de error que veo, luego de estructurar el SQL se ven errores de construcción (simples, pero evidentes):
Código SQL:
Ver original
  1. SELECT
  2.     COUNT(acciones.IdAccion)AS total ,
  3.     SUM(cursos.precio) AS ventas
  4. FROM
  5.     accion_alumno,
  6.     acciones,
  7.     cursos,
  8.     alumnos,
  9.     clientes,
  10.     usuarios
  11. WHERE
  12.     clientes.IdUsuario=usuarios.IdUsuario
  13.     AND clientes.IdCliente=alumnos.IdCliente
  14.     AND accion_alumno.IdAlumno=alumnos.IdAlumno
  15.     AND accion_alumno.IdAccion=acciones.IdAccion
  16.     AND acciones.IdCurso=cursos.IdCurso  
  17.     AND '$filtros'    -- Esto está mal
Esto también tiene errores:
Código SQL:
Ver original
  1. SELECT  
  2.     cursos.*,
  3.     alumnos.nombre,
  4.     alumnos.ap1,
  5.     alumnos.ap2,
  6.     clientes.entidad,
  7.     accion_alumno.
  8.     *,usuarios.nombre AS com,
  9.     clientes.provincia,
  10.     acciones.*,
  11.     accion_alumno.estado AS estado1,
  12.     accion_alumno.regalo AS regalo2,
  13.     usuarios.ap1 AS com1 ,
  14.     usuarios.IdParent,
  15.     usuarios.IdPerfil
  16. FROM
  17.     accion_alumno,
  18.     acciones,
  19.     cursos,
  20.     alumnos,
  21.     clientes,
  22.     usuarios
  23. WHERE    
  24.     clientes.IdUsuario=usuarios.IdUsuario
  25.     AND clientes.IdCliente=alumnos.IdCliente
  26.     AND accion_alumno.IdAlumno=alumnos.IdAlumno
  27.     AND accion_alumno.IdAccion=acciones.IdAccion
  28.     AND acciones.IdCurso=cursos.IdCurso  
  29.     AND '$filtros'  -- Esto esta mal.
  30. ORDER BY '$orden'      -- Esto está mal.
  31. LIMIT $reg1,$tampag

En principio el error que se ve es simple: lo que agregas luego como condiciones adicionales queda encerrado entre apóstrofos y es interpretado por MySQL como una cadena de texto.
Si además de eso, dentro de esa cadena de texto hay apóstrofos, se produce una interrupción multiple de la misma, pudiendo quedar mal construida.
es decir, el resultado podría ser sencillamente algo como:
Código SQL:
Ver original
  1. AND 'usuario.id='3256' AND alumno.alimno_id='245''
Como puedes ver, la estructura SQL queda completamente mal construida.

Además, estás poniendo entre apostrofos también lo que va en el ORDER BY, lo que s un error, porque esa cláusula espera recibir o nombres de campos, o bien la posicion de la columna a usar de ordenamiento... niguna de las cosa que en realida recibe,.

Obviamente todo eso sería muy fácil de ver al instante, si al menos hicieras lo que te pedí: Postear la consulta creada por el script y que envías a ejecutar... Cosa que no has hecho.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)