Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/04/2013, 06:15
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años, 3 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