Foros del Web » Programando para Internet » PHP »

Error de sintaxis??

Estas en el tema de Error de sintaxis?? en el foro de PHP en Foros del Web. Hola a todos, no se que tiene mal esta consulta que si la ejecuto desde consola me da resultados; pero si lo hago desde php ...
  #1 (permalink)  
Antiguo 18/10/2010, 15:39
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Error de sintaxis??

Hola a todos, no se que tiene mal esta consulta que si la ejecuto desde consola me da resultados; pero si lo hago desde php me da el siguiente error
Código MySQL:
Ver original
  1.     organizaciones.id as organizacionId,
  2.     organizaciones.organizacion,
  3.     sectores.sector,
  4.     giros.giro,
  5.     tamanos.tamano
  6. from organizaciones
  7.     giros
  8.     organizaciones.giro_id=giros.id
  9.     sectores
  10.     organizaciones.sector_id=sectores.id
  11.     tamanos
  12.     organizaciones.tamano_id=tamanos.id
  13.     organizaciones.organizacion like("%%") or
  14.     sectores.sector like("%%") or
  15.     giros.giro like("%%") or
  16.     tamanos.tamano like("%%")  order by organizacion desc
Este es el error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
' at line 24

raro no??
  #2 (permalink)  
Antiguo 18/10/2010, 16:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Error de sintaxis??

me tinca que es por las comillas como tienes declara la consulta ??

si la empiezas con comillas dobles los string tienes que cambiarlos por comillas simples
Código PHP:
SELECT
    organizaciones
.id as organizacionId,
    
organizaciones.organizacion,
    
sectores.sector,
    
giros.giro,
    
tamanos.tamano
FROM organizaciones 
JOIN
    giros
on
    organizaciones
.giro_id=giros.id
JOIN
    sectores
on
    organizaciones
.sector_id=sectores.id
JOIN
    tamanos
on
    organizaciones
.tamano_id=tamanos.id 
WHERE 
    organizaciones
.organizacion LIKE('%%') OR
    
sectores.sector LIKE('%%') OR
    
giros.giro LIKE('%%') OR
    
tamanos.tamano LIKE('%%')  ORDER BY organizacion desc 
  #3 (permalink)  
Antiguo 18/10/2010, 16:10
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: Error de sintaxis??

la consulta genera TODA de manera dinamica, te paso la parte en la que se agregan los like, si necesitas mas me avisas

Código PHP:
Ver original
  1. foreach($campos as $tablas => $fields){
  2.             foreach($fields as $key => $campo){
  3.                 /*
  4.                  * Concatena cada uno de los campos seleccionados,
  5.                  * con la notacion de TABLA.CAMPO
  6.                  */
  7.                 $query['fields'].="
  8.                 $tablas.$campo,";
  9.                
  10.                 /*
  11.                  * Mientras se extraen los campos a mostrar en la consulta
  12.                  * se forman las condiciones dentro de la clausula WHERE
  13.                  */
  14.                 $query['where'].="
  15.                 $tablas.$campo like(\"%$buscar%\") or";
  16.                 $wr=true; //wr es simplemente un indicador si se formo el where si no tienen ninguna condicion agrego un where 1=1
  17.             }
  18.         }

espero se entienda.

les explico un poco. a esta funcion llegan dos parametros, el primero es un arreglo con los campos precisamente la variable $campos, esta tiene la siguiente estructura.
Código PHP:
Ver original
  1. (
  2.     [organizaciones] => Array
  3.         (
  4.             [organizacion] => organizacion
  5.         )
  6.  
  7.     [sectores] => Array
  8.         (
  9.             [sector] => sector
  10.         )
  11.  
  12.     [giros] => Array
  13.         (
  14.             [giro] => giro
  15.         )
  16.  
  17.     [tamanos] => Array
  18.         (
  19.             [tamano] => tamano
  20.         )
  21.  
  22. )
con esto en esos dos foreach lo que hago es crear la lista de campos que se solicutan y al mismo tiempo colocar las condiciones del where, al finalme queda la consulta con la que extraigo los registros.

el problema viene cuando le agrego el order by para esto lo hago con una vriable de sesion, ya que el orden debe ser "anidado", es decir,
ordenar por campo1, campo2. es en este momento que me marca el error de sintaxis que menciono.

Última edición por lair; 18/10/2010 a las 18:45
  #4 (permalink)  
Antiguo 19/10/2010, 09:12
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 4 meses
Puntos: 46
Respuesta: Error de sintaxis??

BUENO, ya quedo.

creo que este es uno de tantos errores tontos que me han pasado, el error era el siguiente.

cuando generaba la consulta en el momento de esta debugeando agregue un <br />

con lo que la consulta quedaba "select ......<br />" pero al momento de imprimirla como es logico el br es solo un salto de linea y no lo notaba pero para mysql es parte de la consulta.

gracias Death_Empire por tu apoyo

Última edición por lair; 19/10/2010 a las 09:29

Etiquetas: sintaxis
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 05:01.