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

[SOLUCIONADO] Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en la BD

Estas en el tema de Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en la BD en el foro de Mysql en Foros del Web. Hola a tod@s, Soy novato y estoy intentando actualizar un campo e-mail desde php en mysql, pero me da un error en la sentencia: @import ...
  #1 (permalink)  
Antiguo 09/03/2016, 05:15
 
Fecha de Ingreso: marzo-2016
Ubicación: S/C de Tenerife
Mensajes: 2
Antigüedad: 8 años, 1 mes
Puntos: 0
Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en la BD

Hola a tod@s,

Soy novato y estoy intentando actualizar un campo e-mail desde php en mysql, pero me da un error en la sentencia:

Código MySQL:
Ver original
  1. UPDATE proveed pr,contactar co,aux_serv_ofertado se
  2. SET pr.id=17, pr.nom_com=dafgdfsg, pr.nom_proveed=gga, pr.apell_proveed=dfgdf, co.e_mail=[email protected], co.tfno=922272727 co.movil=619619619, co.fax=828121212, co.direccion=, se.serv_ofertado=minutos de sabiduria, se.experiencia=, se.tiempo_resp=
  3. WHERE pr.id = 17 AND pr.id = co.id_rel AND pr.id = se.id_rel

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 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 '@gmail.com,co.tfno=922272727,co.movil=619619619,c o.fax=828121212,co.direccion=,s' at line 1

He estado investigando y el problema parece ser el caracter @ que se usa para variables de usuario mysql,pero no encuentro como escaparlo. Si me pueden ayudar...se los agradeceré.

Última edición por gnzsoloyo; 09/03/2016 a las 05:39
  #2 (permalink)  
Antiguo 09/03/2016, 05:45
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, 4 meses
Puntos: 2658
Respuesta: Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en

Lo que tienes allí es mucho más que un simple problema de escapar un caracter: Tu query queda terriblemente mal construida.
Todas las cadenas de texto están siendo tratadas como si fuesen columnas de la base de datos. Esa sintaxis (sin duda creada por programación) forzosamente te disparará errores de ejecución.

¿En qué se supone que la estás haciendo?

Para que te des una idea, eso debería quedar así:

Código MySQL:
Ver original
  1. UPDATE proveed pr, contactar co ,aux_serv_ofertado se
  2.    SET pr.id = 17,
  3.    pr.nom_com = 'dafgdfsg',
  4.    pr.nom_proveed = 'gga',
  5.    pr.apell_proveed = 'dfgdf',
  6.    co.e_mail = '[email protected]',
  7.    co.tfno=922272727
  8.    co.movil=619619619,
  9.    co.fax=828121212,
  10.    co.direccion= NULL,
  11.    se.serv_ofertado='minutos de sabiduria',
  12.    se.experiencia= NULL,
  13.    se.tiempo_resp= NULL
  14. WHERE pr.id = 17 AND pr.id = co.id_rel AND pr.id = se.id_rel

TE hago notar también que has dejado varios campos sin asignación, lo que generará otros errores en la ejecución, para lo cual estoy poniendo NULL en el ejemplo. Eso sin duda dependerá de su tus campos son nulables o no.
__________________
¿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 09/03/2016, 06:06
 
Fecha de Ingreso: marzo-2016
Ubicación: S/C de Tenerife
Mensajes: 2
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en

Muchísimas gracias por tu pronta y clara respuesta 'gnzsoloyo'.
Me lo ha aclarado perfectamente el error y su solución.
La sentencia update fue generada automáticamente por un generador que me hice en php, pero la inexperiencia hace que queden estos cabos sueltos.
Muchas gracias de nuevo.
  #4 (permalink)  
Antiguo 09/03/2016, 06:14
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, 4 meses
Puntos: 2658
Respuesta: Como escapar el caracter @ de un e-mail al introducirlo o actualizarlo en




Nunca te olv,ides que MySQL no interpreta lenguajes de programación, ni siquiera PHP. Las sentencias deben quedar correctamente construidas en SQL, por lo que es recomendable antes de ejecutarlas desde la aplicación, hacer que las muestre en pantalla a fin de asegurarte la exactitud de su sintaxis, e incluso te permita probarla manualmente con un frot-end.

Sigue el tema de la construcción de la sentencia en el foro de PHP, si lo deseas.
__________________
¿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: bd, campo, e-mail, escapar, 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 01:14.