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

Me da error el apostrofe '

Estas en el tema de Me da error el apostrofe ' en el foro de ASP Clásico en Foros del Web. Tengo una base de datos a la que introduzco datos desde un formulario html y ASP. La cuestión es que siempre me aceptaba palabras que ...
  #1 (permalink)  
Antiguo 15/03/2006, 04:21
 
Fecha de Ingreso: marzo-2006
Mensajes: 17
Antigüedad: 18 años, 2 meses
Puntos: 0
Me da error el apostrofe '

Tengo una base de datos a la que introduzco datos desde un formulario html y ASP. La cuestión es que siempre me aceptaba palabras que contenían el caracter apostrofe ('), pero desde hace un tiempo no lo permite y me da error. ¿Por qué está pasando esto?
  #2 (permalink)  
Antiguo 15/03/2006, 04:46
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 18 años, 6 meses
Puntos: 1
El apóstrofe en SQL "rompe" la consulta. A menudo es usado por usuarios malintencionados que mediante inyección de SQL (SQL Injection, que dicen los más versados...) pretenden reventar bases de datos ajenas.
A menudo aparece en los grupos de noticias una pregunta sobre alguien que tiene problemas a la hora de construir los criterios de una sentencia SQL, ya sea porque en esos criterios se utilizan fechas, o bien porque a lo mejor hay algún campo de texto que contiene una comilla simple como te ocurre a ti (lo cual es interpretado erróneamente por el motor de base de datos como un separador de campos o argumentos).

Me explico. Esta sentencia producirá un error de "error de sintaxis, falta operador..." porque el motor de base de datos cogerá el apóstrofe como un separador de argumentos y la sentecia SQL petará. Observa:
Código:
sDestinatario = "B's Beverages"

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Para resolverlo debemos sustituir la comilla simple por un par de comillas, así:
Código:
sDestinatario = "B's Beverages"
' reemplazamos las comillas simples por un par 
' de comillas
sDestinatario = Replace(sDestinatario, "'", "''")

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Por ello te recomiendo que te acostumbres a usar el replace para añadir comillas dobles al apóstrofe (y ya de paso evitas algo de SQL injection!!!)
Aupa.

Última edición por gorka_arai; 15/03/2006 a las 05:49
  #3 (permalink)  
Antiguo 28/08/2008, 12:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Me da error el apostrofe '

Una solución excelente gracias!
  #4 (permalink)  
Antiguo 28/08/2008, 15:01
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Me da error el apostrofe '

un placer kolega!!!
  #5 (permalink)  
Antiguo 17/06/2009, 16:59
Avatar de Leo54  
Fecha de Ingreso: septiembre-2008
Mensajes: 3
Antigüedad: 15 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Me da error el apostrofe '

Cita:
Iniciado por gorka_arai Ver Mensaje
El apóstrofe en SQL "rompe" la consulta. A menudo es usado por usuarios malintencionados que mediante inyección de SQL (SQL Injection, que dicen los más versados...) pretenden reventar bases de datos ajenas.
A menudo aparece en los grupos de noticias una pregunta sobre alguien que tiene problemas a la hora de construir los criterios de una sentencia SQL, ya sea porque en esos criterios se utilizan fechas, o bien porque a lo mejor hay algún campo de texto que contiene una comilla simple como te ocurre a ti (lo cual es interpretado erróneamente por el motor de base de datos como un separador de campos o argumentos).

Me explico. Esta sentencia producirá un error de "error de sintaxis, falta operador..." porque el motor de base de datos cogerá el apóstrofe como un separador de argumentos y la sentecia SQL petará. Observa:
Código:
sDestinatario = "B's Beverages"

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Para resolverlo debemos sustituir la comilla simple por un par de comillas, así:
Código:
sDestinatario = "B's Beverages"
' reemplazamos las comillas simples por un par 
' de comillas
sDestinatario = Replace(sDestinatario, "'", "''")

SQL = "SELECT * FROM Pedidos " _
& "WHERE Destinatario = '" & sDestinatario & "'"
Por ello te recomiendo que te acostumbres a usar el replace para añadir comillas dobles al apóstrofe (y ya de paso evitas algo de SQL injection!!!)
Aupa.
funciono de maravilla, muchas gracias ... saludos
  #6 (permalink)  
Antiguo 30/01/2012, 09:04
 
Fecha de Ingreso: febrero-2011
Mensajes: 33
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Me da error el apostrofe '

Hola Leo54,
Me podrias indicar el tipo de datos que asignastes al campo Destinatario.
Gracias.
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:31.