Foros del Web » Programando para Internet » ASP Clásico »

Insert con un campo con comillas

Estas en el tema de Insert con un campo con comillas en el foro de ASP Clásico en Foros del Web. Tengo una pagina en asp donde estoy tratando de realizar un insert de varios campos pero en uno de ellos debo guardar codigo HTML, esto ...
  #1 (permalink)  
Antiguo 28/12/2006, 13:29
 
Fecha de Ingreso: septiembre-2006
Mensajes: 18
Antigüedad: 18 años, 5 meses
Puntos: 0
Insert con un campo con comillas

Tengo una pagina en asp donde estoy tratando de realizar un insert de varios campos pero en uno de ellos debo guardar codigo HTML, esto implica que este campo tendra codigo como (<, >, ?, ", ') como veran mi problema se da cuando en este campo existe una comilla simple o doble ya que la sentencia SQL se corta donde encuentra una comilla pensando que ahi termina la sentencia.

El codigo es el siguiente

unidad = request.form("unidad") ' este control tiene un value con codigo html que incluye comillas

sql="INSERT INTO unidadcontenedora (id,secuencia,pagina,imagen,unidad,titulo_hoja,par am_busca,pos_grafico,img_alto,img_ancho,estado) VALUES ('" &id& "', " &secuencia& ", " &pagina& ", '" &imagen& "', '" &unidad& "', '" &titulo_hoja& "', '" &param_busca& "', '" &pos_grafico& "', '" &img_alto& "', '" &img_ancho& "', '" &estado& "')"


el campo "unidad" es el que contiene el codigo html que quiero guardar en la base y es este el que me da error al encontrar comillas.

Favor su ayuda urgente, gracias de antemano, estoy seguro q otros ya han pasado por este mismo caso.
  #2 (permalink)  
Antiguo 28/12/2006, 14:02
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años, 3 meses
Puntos: 8
Re: Insert con un campo con comillas

Que tal.

Puedes intentar lo siguiente:

Código:
sql = replace(sql, "'", "''")
Lo que haces es buscar cada ocurrencia de un apostrofo y reemplazarlo por dos. ' --> ''

Saludos y suerte!
  #3 (permalink)  
Antiguo 28/12/2006, 16:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 18
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Insert con un campo con comillas

Que tal Daniel.

Pasa lo siguiente, imaginemos que la variable "unidad" viene cargada con el siguiente string:

<tr valign="middle">
<td height="135" align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="javascript:MM_openBrWindow('../zoom.asp?imagen=K2811gr.jpg','zoom','scrollbars=ye s,width=400,height=350')"><img src="../productos/images/K2811.jpg" border="0" /></a><a href="javascript:MM_openBrWindow('../zoom.asp?imagen=K2813gr.jpg','zoom','scrollbars=ye s,width=400,height=350')"></a></font></td>


si hago lo que tu me recomiendas me estaria cambiando las ( ' ) por ( " ) y si te fijas en el string especificamente en :

href="javascript:MM_openBrWindow('../zoom.asp?imagen=K2811gr.jpg','zoom'...

me cambiaria las comillas simples ( ' ) por ( " ) y se dañaria el codigo html, osea me quedaria algo asi:

href="javascript:MM_openBrWindow("../zoom.asp?imagen=K2811gr.jpg","zoom",...
y ese no es un codigo html correcto, ya que luego necesitare mostrar ese codigo en otra pagina html.
  #4 (permalink)  
Antiguo 28/12/2006, 17:27
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años, 3 meses
Puntos: 8
Re: Insert con un campo con comillas

Hola de nuevo.

Cuando recuperas el campo de SQL Server, te lo devolverá con un solo apostrofe.

Obviamente las comillas dobles sólo son para la sentencia de SQL Server, no para formar parte de un html.

La doble comilla(apostrofe) es para indicarle a SQL que no es fin de cadena, sino que la cadena contiene un apostrofe.

Prueba y veraz que funciona!

Es muy común hacer estas prácticas( de reemplazar apostrofes) en los campos de tipo cadena, para evitar errores del tipo que mencionas, además de la inyección de código no deseado.


Saludos y suerte!
  #5 (permalink)  
Antiguo 29/12/2006, 02:00
Avatar de pablinff  
Fecha de Ingreso: diciembre-2005
Ubicación: Argentina
Mensajes: 383
Antigüedad: 19 años, 1 mes
Puntos: 7
Re: Insert con un campo con comillas

O también podría pobrar reemplazar las comillas dobles por dos comillas dobles:
Código:
sql = replace(sql, &quot;"&quot;, &quot;""&quot;)
Saludos!
__________________
I'm gonna start a revolution from my bed...
  #6 (permalink)  
Antiguo 02/01/2007, 01:21
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 18 años, 1 mes
Puntos: 8
Re: Insert con un campo con comillas

Yo me encontré con el mismo problema, y despues de probar mil cosas para aceptar html y demás en el campo, encontré una solución por casualidad: <textarea>
si, sólo es eso xD parece ser que mientras los input text y demás dan problemas con comillas simples y dobles, los textarea se lo comen todito, asi que insertas directamente el post
insert into tabla(campo) values($_post['nombre_textarea'])
y funciona perfectamente ^^
  #7 (permalink)  
Antiguo 02/01/2007, 08:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 18
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: Insert con un campo con comillas

Ok, Daniel, tienes toda la razon, funcionó a la perfección.

Gracias.
  #8 (permalink)  
Antiguo 04/01/2007, 10:18
 
Fecha de Ingreso: septiembre-2004
Ubicación: Santiago de Compostela
Mensajes: 103
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Insert con un campo con comillas

Cita:
Iniciado por fiu Ver Mensaje
Yo me encontré con el mismo problema, y despues de probar mil cosas para aceptar html y demás en el campo, encontré una solución por casualidad: <textarea>
si, sólo es eso xD parece ser que mientras los input text y demás dan problemas con comillas simples y dobles, los textarea se lo comen todito, asi que insertas directamente el post
insert into tabla(campo) values($_post['nombre_textarea'])
y funciona perfectamente ^^
fiu, esto me da que es PHP y no ASP ... creo que en ASP la mejor opción es la de sustituir las comillas por dobles.
__________________
Fran Castro
Diseño de Paginas Web Descargas Gratis
  #9 (permalink)  
Antiguo 24/06/2007, 06:05
 
Fecha de Ingreso: enero-2004
Mensajes: 57
Antigüedad: 21 años
Puntos: 0
De acuerdo Re: Insert con un campo con comillas

¡¡Bendito post!! Me ha ayudado en el momento justo

Hay que hacer eso de las comillas que ha dicho daniel00.

Saludos!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:17.