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

Problema con un insert

Estas en el tema de Problema con un insert en el foro de Mysql en Foros del Web. Buenas, me gustaría saber como puedo hacer para hacer un insert, y si es un string poder insertar comillas dentro, que ahora mismo me da ...
  #1 (permalink)  
Antiguo 28/03/2007, 11:55
Avatar de Vincent_Vallentine  
Fecha de Ingreso: diciembre-2005
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Busqueda Problema con un insert

Buenas, me gustaría saber como puedo hacer para hacer un insert, y si es un string poder insertar comillas dentro, que ahora mismo me da error puesto que si hago SET campo='Store's', al haber unas comillas en medio da error, y si lo hago con comillas dobles pasa lo mismo, pero al insertar las dobles.

Gracias de antemano,
Saludos.
  #2 (permalink)  
Antiguo 28/03/2007, 13:45
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 16 años
Puntos: 0
Re: Problema con un insert

Esta es una consulta de php (o el lenguaje que utilices). Si es php, con la función addslashes lo solucionas.
  #3 (permalink)  
Antiguo 28/03/2007, 13:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 12 años, 9 meses
Puntos: 2
Re: Problema con un insert

la comilla que quieres que sea mostrada y no ejecutada por php, osea en tu caso seria la comilla del medio, ponla antecedida de \, osea si queires que sea vea ', pon \' pero fijate en la barra es esta ,\ y no / xD

Un saludo
  #4 (permalink)  
Antiguo 29/03/2007, 11:00
Avatar de Vincent_Vallentine  
Fecha de Ingreso: diciembre-2005
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Re: Problema con un insert

Pues si k pone la contrabarra, pero me sigue pasando lo mismo.

$sql="INSERT INTO linies_anuncis SET tamany_font=".$_POST[size_nologo1].", negreta=".$b_nologo1.", cursiva=".$i_nologo1.", subratllat=".$u_nologo1.", text='".addslashes($_POST[text_nologo1])."', id_anunci=".$idanunci.", num_frame=11, id_font='".$_POST[font_nologo1]."', color='".$_POST[color_nologo11]."';";

El problema esta en el $_POST[text_nologo1], que cuando haces unas comillas dobles para ya de guardar (Ej: si pones hola"que"tal solo te guarda hola).

A ver si alguno sabe que pasa y me lo comenta.

Muchas gracias :)
  #5 (permalink)  
Antiguo 29/03/2007, 11:38
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 16 años
Puntos: 0
Re: Problema con un insert

Cambia todas las comillas dobles por comillas simples. Es decir:

$sql='INSERT INTO linies_anuncis SET tamany_font='...

Por cierto, en los arrays asociativos (con nombre) es conveniente poner comillas también, es decir:

$_POST['size_nologo1']

Un saludo
  #6 (permalink)  
Antiguo 29/03/2007, 11:44
Avatar de Vincent_Vallentine  
Fecha de Ingreso: diciembre-2005
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Re: Problema con un insert

Cita:
Iniciado por Vincent_Vallentine Ver Mensaje
text='".addslashes($_POST[text_nologo1])."',
Las comillas son simples, las dobles son para concatenar el texto con las variables
  #7 (permalink)  
Antiguo 29/03/2007, 12:01
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 16 años
Puntos: 0
Re: Problema con un insert

Se haría así:

Código:
text=\''.addslashes($_POST[text_nologo1]).'\',
Es decir, a la hora de definir la variable o la propia consulta usa siempre comillas simples. Cuando parte del texto sea una comilla simple pero que debe ser interpretada como texto usa el caracter de escape \. Al principio te podrán salir muchos fallos si te lías colocando mal el caracter de escape. Pero revisándolo cuidadosamente siempre sacas el fallo.

Un saludo
  #8 (permalink)  
Antiguo 29/03/2007, 12:08
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 16 años
Puntos: 0
Re: Problema con un insert

Perdona, ese texto que te he puesto está mal. Es que lo puse con prisas porque me llamaban por teléfono. Un ejemplo válido:

Código:
$query = 'SELECT algo FROM tabla WHERE loquesea = \''.addslashes($loquesea).'\'';
Recuerda siempre abrir y cerrar las comillas y poner el caracter de escape en todos los sitios donde sea necesario.
  #9 (permalink)  
Antiguo 29/03/2007, 12:35
Avatar de Vincent_Vallentine  
Fecha de Ingreso: diciembre-2005
Mensajes: 40
Antigüedad: 14 años, 1 mes
Puntos: 0
Re: Problema con un insert

Pues es igual que el mío solo que mi echo está hecho con comillas dobles...

$sql = "select loksea from loksea where text='".addslashes($_POST[text_nologo2])."'";

Yo sigo pensando que esta bien... pero en cuanto encuentra unas comillas dobles para y se come el resto de la palabra :/

Muchas gracias por la ayuda :)
  #10 (permalink)  
Antiguo 29/03/2007, 13:26
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 16 años
Puntos: 0
Re: Problema con un insert

Vicent, ya sé que son equivalentes. Pero si el problema es con las comillas dobles, usando solo comillas simples para la definición no tendrás problema. Además creo que está más optimizado con las simples que con las dobles ya que estas últimas permiten cosas como meter variables dentro por lo que de algún modo deben ser "procesadas" mientras que las simples solo son interpretadas como "desde aquí hasta aquí texto".

Por ejemplo:

Código:
$variable = "hol"a";
$variable = 'hol'a';
(dan fallo).

Código:
$variable = "hol\"a";
$variable = 'hol\'a';
$variable = "hol'a";
$variable = 'hol"a';
(no dan fallo).

Lo que no entiendo es por qué addslashes no te añade el caracter de escape en las comillas dobles (en teoría debería hacerlo) pero de todas formas si la definición la haces con comillas simples dará lo mismo que no te escape las dobles.

Cuando la definición está hecha con comillas simples solo tienes que escapar las simples pero una comilla doble dentro de esas comillas simples es interpretada como texto aunque no esté escapada.

Un saludo
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 13:38.