Foros del Web » Programando para Internet » PHP »

Insertar comillas en SQLServer con PHP!!!

Estas en el tema de Insertar comillas en SQLServer con PHP!!! en el foro de PHP en Foros del Web. Hola a todos, tengo un problema cuando inserto un registro que contenga comillas ejemplo: "Hola como estas" a la hora de hacer la insercion me ...
  #1 (permalink)  
Antiguo 23/01/2008, 16:13
 
Fecha de Ingreso: febrero-2003
Ubicación: Distrito Federal
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Insertar comillas en SQLServer con PHP!!!

Hola a todos, tengo un problema cuando inserto un registro que contenga comillas ejemplo: "Hola como estas" a la hora de hacer la insercion me muestra lo siguiente "\"Hola como estas"\" y no se como hacerle para que la informacion se anexe integra a la Base de Datos pero sin este problema, mi codigo es:
Código HTML:
<form name="forma" method="post" action="<?php echo $PHP_SELF;?>" enctype="multipart/form-data">
<tr>
      <td width="15%">Asunto</td>
      <td width="85%"><textarea name="var_asunto" cols="90" rows="3"></textarea></td>
	</tr>
<input type="submit" name="guardar" value="GUARDAR">

<?
if (isset($_POST['guardar'])) { 
 $query = "INSERT INTO [$nom_tabla2] (ASUNTO) VALUES ('$_POST[var_asunto]')";
mssql_query( $query ) or die( mssql_get_last_message() );
mssql_close($BD);
}
?> 

Agradeceria mucho si pudieran ayudarme, de antemano gracias.
  #2 (permalink)  
Antiguo 23/01/2008, 19:05
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Insertar comillas en SQLServer con PHP!!!

no se si sabes que el simbolo '\'(sin comillas) es para escapar los caracteres especiales, en este caso las comillas dobles ya que de no hacerlo tendrias problemas con el sql, mira:
Código:
$query = "INSERT INTO [$nom_tabla2] (ASUNTO) VALUES ('$_POST[var_asunto]')";
al remplazar la variable por el contenido tendrias algo como esto
Código:
$query = "INSERT INTO [$nom_tabla2] (ASUNTO) VALUES ("hola mundo")";
aqui php marcaria un error porque entiende que al encontrar la segunda " (comilla) se estaria terminando la sentencia, por esa razón se usa el caracter de escape.
Código:
$query = "INSERT INTO [$nom_tabla2] (ASUNTO) VALUES (\"hola mundo\")";
con esto se le indica a php que las comillas a la que le precede el caracter de escape lo debe de tomar como parte de la cadena de texo.

yo no programo usando mssql, pero creo que al momento de guardar deberia de excluir el caracter de escape, checa la base de datos para ver si en realidad esta guardando el caracter de escape.

espero me haya explicado, ya que no soy muy bueno para las explicaciones.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 23/01/2008 a las 19:12
  #3 (permalink)  
Antiguo 31/01/2008, 14:11
 
Fecha de Ingreso: febrero-2003
Ubicación: Distrito Federal
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Insertar comillas en SQLServer con PHP!!!

Hola eits, muchas gracias por dedicar de tu tiempo a contestarme esta pregunta pero efectivamente lo que esta haciendo es guardarme el caracter de escape, mi pregunta ahora es ¿como puedo hacer para que no agregue ese caracter? Gracias por la ayuda que puedan darme. Saludos
  #4 (permalink)  
Antiguo 31/01/2008, 16:42
 
Fecha de Ingreso: julio-2007
Ubicación: CUENCA - ECUADOR
Mensajes: 61
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Insertar comillas en SQLServer con PHP!!!

Hola lestlienoe lo que tienes que hacer es que antes de que grabes utilizes esta funcion
addslashes($variable);

y cuando vayas a mostrar los datos almacenados en la bd utiliza

stripslashes($variable); para quitar los "\" y obtengas el texto con comillas dobles o simples.....
  #5 (permalink)  
Antiguo 31/01/2008, 20:51
 
Fecha de Ingreso: febrero-2003
Ubicación: Distrito Federal
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Insertar comillas en SQLServer con PHP!!!

Hola wilrocaul, pues ya intente lo que me comentas y se complico el asunto
inserta en la Base de Datos esto \\\"rehabilitación\\\" y me muestra en la pagina web esto \"rehabilitación\" mira te voy a poner mi codigo:
Código HTML:
<? if (isset($_POST['guardar'])) {//ABRE IF 
$v_asunto=addslashes($_POST[var_asunto]); 
$query = "INSERT INTO [$nom_tabla2] (ASUNTO) VALUES ('$v_asunto')";
mssql_query( $query ) or die( mssql_get_last_message() );
mssql_close($BD);
}//CIERRA IF
?>
<form name="forma" method="post" action="<?php echo $PHP_SELF;?>" enctype="multipart/form-data">
<tr>
<td width="12%">Asunto</td>
<td width="88%"><textarea name="var_asunto" cols="90" rows="3"></textarea></td>
</tr> 
<input name="guardar" type="submit" id="guardar2" value="GUARDAR"> 
Y cuando lo muestro es de la siguiente manera:
Código HTML:
<? $result = mssql_query("SELECT * FROM $nom_tabla2 WHERE DIA=$DiaActual2 AND MES=$MesActual2 AND ANO=$AnoActual2 ORDER BY ID_RECTEL DESC");
mssql_num_rows($result);
$fila = mssql_fetch_array($result);
$v_asunto=stripslashes($fila[ASUNTO]);
echo "$v_asunto"; ?> 
Agradeceria mucho a quien pudiera ayudarme a dar solucion a esto. Gracias
  #6 (permalink)  
Antiguo 01/02/2008, 10:49
 
Fecha de Ingreso: febrero-2003
Ubicación: Distrito Federal
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Insertar comillas en SQLServer con PHP!!!

Ayuda please, Tal vez alguien ya paso por esto y pueda compartir su solucion
  #7 (permalink)  
Antiguo 01/02/2008, 11:22
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Insertar comillas en SQLServer con PHP!!!

intenta guardarlo como al principio(o sea, con el escape "\"), pero cuando vayas a mostrar el contenido usas sole el stripstripslashes.

prueba y dices,esto mientras se me ocurre otra cosa

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 03/02/2008, 13:20
 
Fecha de Ingreso: febrero-2003
Ubicación: Distrito Federal
Mensajes: 26
Antigüedad: 21 años, 2 meses
Puntos: 0
Re: Insertar comillas en SQLServer con PHP!!!

Hola eits, Muchas Gracias por tu aportacion se soluciono el asunto, lo unico es que, es que guarda en la Base de Datos la informacion con esto "\", pero cuando muestra la informacion ya no aparece la diagonal. De nuevo Gracias por la yuda.
  #9 (permalink)  
Antiguo 19/02/2008, 15:51
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
De acuerdo Re: Insertar comillas en SQLServer con PHP!!!

Dependerá si tienes activado o no las comillas mágicas. Así solucioné yo el problema:

if (!get_magic_quotes_gpc()) {
$title = addslashes($_POST["title"]);
$short = addslashes($_POST["short"]);
$detail = addslashes($_POST["detail"]);
} else {
$title = $_POST["title"];
$short = $_POST["short"];
$detail = $_POST["detail"];
}

Tengo que poner esa condición porque si no no me hace portable la aplicación, siempre dependerá si el php tiene activada esa flag.

Lee por aquí: http://es.php.net/magic_quotes

Es un peñazo, pero me vale.
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!
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:05.