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

[SOLUCIONADO] ¿error en sintaxis sql?

Estas en el tema de ¿error en sintaxis sql? en el foro de Mysql en Foros del Web. tengo este método dentro de una clase para hacer un update con php. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original UPDATE libro_de_visitas SET ( texto = ...
  #1 (permalink)  
Antiguo 18/04/2013, 03:55
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Pregunta ¿error en sintaxis sql?

tengo este método dentro de una clase para hacer un update con php.

Código MySQL:
Ver original
  1. UPDATE libro_de_visitas
  2. SET (texto=".$texto.")
  3. WHERE (id=".$id.")

al ejecutarlo me devuelve este error

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 '(texto= hola editado por primera vez ) where (id=11)' at line 1


¿alguien me puede ayudar a encontrar este error?

Última edición por gnzsoloyo; 18/04/2013 a las 05:35 Razón: Codigo de programación no permitido en foros de Bases de Datos.
  #2 (permalink)  
Antiguo 18/04/2013, 05:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿error en sintaxis sql?

Todos los paréntesis que has puesto están de más, pero el peor es el del SET...

Los paréntesis, tenlo en cuenta, encapsulan la operación que contienen. Se pueden encapsular comparaciones, relaciones parámetros, o resultados, pero no se puede encapsular una asignación de valores. Eso está mal.

PD: No postees código de programación en los foros de BBDD (Normas del Foro). Resulta confuso, ilegible, no es relevante al SQL y esconde los errores causados por valores que no están.La recomendación siempre es capturar la sentencia antes de su ejecución una vez que los valores ya están incluidos en la query, y postear eso
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/04/2013, 05:52
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: ¿error en sintaxis sql?

muchas gracias gnzsoloyo, lo de los paréntesis no lo sabía, me enseñaron a siempre a encapsular todo después de un SET o un WHERE.

lo he corregido tal y como me has indicado, quedando el código así

Código SQL:
Ver original
  1. UPDATE libro_de_visitas SET texto=".$texto." WHERE id=".$id."

pero me muestra el mismo error.


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 'editado por primera vez WHERE id=11' at line 1


tienes razón respecto a lo del código php, lo siento, puse todo el método porque pensé que podría servir de ayuda ver todo el código de alrededor. no volverá a pasar.

Última edición por gnzsoloyo; 18/04/2013 a las 05:57 Razón: Codigo de PHP no debe ser incluido
  #4 (permalink)  
Antiguo 18/04/2013, 06:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿error en sintaxis sql?

Porque las cadenas de texto deben quedar entre apóstrofos ('), y lo que está entrando en la primera variable puede generar un error sintáctico si está compuesto de más de una palabra (si fuera una sola te diría "Columna xxx desconocida")
Código MySQL:
Ver original
  1. UPDATE libro_de_visitas
  2. SET texto='$texto'
  3. WHERE id=$id
También van entre apóstrofes las fechas (recordar que el formato estandar de BBDD es YYYY-MM-DD), pero no los números.
Respecto a las cadenas, tienes que cuidarte de controlar la existencia de apostrofos y otros caracteres dentro de la variable, para evitar que el contenido de esa variable rompa la sintaxis de la query. el PHP tiene funciones para eso.
En cuanto a los paréntesis, en SQL Server tiene un uso diferente, pero el resto de los DBMS tiene su propia forma de interpretarlo.
En el caso de MySQL y Oracle, por ejemplo, el encapsulamiento lleva a que el parser segmente el análisis de esos valores contenidos, separándolos del resto de las condiciones, y puede terminar generando problemas de performance.
Los paréntesis se deben usar si y sólo si son necesarios para aislar operaciones lógicas, de columnas o de cálculo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/04/2013, 06:15
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: ¿error en sintaxis sql?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Porque las cadenas de texto deben quedar entre apóstrofos ('), y lo que está entrando en la primera variable puede generar un error sintáctico si está compuesto de más de una palabra (si fuera una sola te diría "Columna xxx desconocida")
Código MySQL:
Ver original
  1. UPDATE libro_de_visitas
  2. SET texto='$texto'
  3. WHERE id=$id
También van entre apóstrofes las fechas (recordar que el formato estandar de BBDD es YYYY-MM-DD), pero no los números.
Respecto a las cadenas, tienes que cuidarte de controlar la existencia de apostrofos y otros caracteres dentro de la variable, para evitar que el contenido de esa variable rompa la sintaxis de la query. el PHP tiene funciones para eso.
En cuanto a los paréntesis, en SQL Server tiene un uso diferente, pero el resto de los DBMS tiene su propia forma de interpretarlo.
En el caso de MySQL y Oracle, por ejemplo, el encapsulamiento lleva a que el parser segmente el análisis de esos valores contenidos, separándolos del resto de las condiciones, y puede terminar generando problemas de performance.
Los paréntesis se deben usar si y sólo si son necesarios para aislar operaciones lógicas, de columnas o de cálculo.
excelente explicación. me sirvió de mucha ayuda, sobre todo a conocer algo totalmente nuevo, el parser, no sé lo que es pero ya estoy buscando info al respecto. finalmente este update con tus explicaciones quedó así

Código SQL:
Ver original
  1. UPDATE libro_de_visitas SET texto='".$texto."' WHERE id=".$id;

sinceramente muchísimas gracias por tu inestimable ayuda.

Última edición por gnzsoloyo; 18/04/2013 a las 06:33
  #6 (permalink)  
Antiguo 18/04/2013, 06:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿error en sintaxis sql?

El parser es el analizador de las consultas de MySQL. Es interno y es el que decide cómo se realizará la consulta, qué indices tomará y cuáles descartará, etc. En definitiva es la parte del kernel que define todo el proceso de la consulta, sobre la base de lo que le pides.
En definitiva, es el componente de Planificación de Consultas...

Su equivalente en SQL Server podría ser el Analizador de Consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, sintaxis, sql
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 15:41.