![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)
Tengo un problema con el caracter ' al pasar a la base de datos y a listar en pantalla.
Saludos
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)
| ||||
Mira te comento Tengo en el formlario un tipo texto con una variable $DESC cuando la envio para pasarla a la base de datos MYSQL me se mete un montón de variables en mi pantalla y al listarlo por pantalla esa variable que contiene el caracter ' me falla la tabla donde va introducida. Espero haberme explicado . Saludos ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| |||
Hola, Supongo que haces el insert o el update con '$campo_form'. Esto lo transforma PHP en 'texto con ' dentro de el' y se lo pasa a MySQL. MySQL toma las ' como limite de campo de texto, por lo que entiende la cadena 'texto con ' y el resto le da error por no ser sintaxis valida. La solucion es escapar la cadena que vas a introducir en la BD. Tienes funciones como addslashes() (www.php.net/addslashes) o mysql_escape_string() (www.php.net/mysql_escape_string). Luego cuando leas de la BD debes desescapar con stripslashes() (www.php.net/stripslashes). Pero (siempre hay un pero) dependiendo de la configuracion de PHP (en concreto de magic_quotes_gpc y magic_quotes_runtime), puede que estes escapando 2 veces el campo del formulario y solo desescapandolo 1. Si magic_quotes_gpc esta a on, se escapan automaticamente los valores recibidos por GET, POST y COOKIES, con lo que no es necesario escapar los valores antes de meterlos en la BD, pero si desescaparlos. Si esta a off, debes escaparlos y desescaparlos. Espero haber sido de ayuda.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| |||
mira lo que puedes hacer para evitar que tu script no funcione por esos caracteres y otros que tienen problema para funcionar este es un codigo que modifique que esta en maestros del web sobre autentificacion de usuarios te explico como funciona para ingresar los caracteres comillas en tu bd lo que hace es modificar el caracter por su codigo html y cuando lo muestres lo va a mostrar en forma correcta ya que va a mostrar codigo que es reconocido por los navegadores y los transforman a su codigo normal este es una funcion que trasforma el texto ingresado a la forma que la bd no traiga problemas para ocuparlo solo lo llamas haci quitar($variable); Código PHP: salu2 ![]() |
| |||
Bueno, para la solucion de kech existen ya funciones como htmlspecialschars(), htmlentities(), ... Pero con la solucion de kech tendrias que realizar la transformacion inversa para, por ejemplo, poner el contenido en un textarea para editarlo. Saludos.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| ||||
Saludos, Y claro quitarle la opcion al usuario que no ponga las ' es un poco feo, no? Me lo habeis explicado perfectamente pero no os e podido captar. Si yo tengo una variable del formulario y lo meto en la base de datos $NAME_FORM; mysql_query("INSERT FROM entrada (Nobase) VALUES ('y aqui' )",$conexion); Saludos ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| ||||
¿Y por qué no "escapas" los caracteres especiales? Con addslashes() añades una \ delante de los caracteres especiales, así no te darían problemas. Luego para mostrar por pantalla, usas stripslashes() para quitar las \ y ya está. Como siempre, revisa el manual de PHP (en el de rinconastur que te pasé, viene ![]()
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| |||
Bueno, si te decides a usar addslashes(), seria algo asi: Código PHP: Código PHP: Saludos.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| ||||
Saludos , Para mostrarlo despues de la base de datos no tengo ningún problema pero es a la hora de hacerlo entrar en la base de datos Mysql que me da un pequeño error. Saludos ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| ||||
Ok, Todo entenido me lo revisaré despues haber si esta correcto Un saludo ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| ||||
Creo no poder solucionarlo, bueno haber entre "" Ahora al registrarlo a la base de datos no hay problema ya que me se pone la \ antes del carácter.. Pero al listarlo dentro de una tabla me se pone una tabla antes de llamarlo y bueno la tabla es erronea. Saludos ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| ||||
A la entrada de la base de datos lo hago asín mysql_query("INSERT FROM entrada (Nobase) VALUES ('".addslashes($NAME_FORM_bd)."' )",$conexion); Pero no me va al listarlo ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |
| |||
Hola, Pues sin ver el codigo que usas, es un poco dificil saber si lo haces mal. Deberia ser algo como: Código PHP:
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| ||||
Hola Josemi, Mira para la salida le pongo echo stripslashes($VALOR); Te pongo valo porque utilizo mysql_num_rows y bucle con for Es que solo hago llamar la tabla e imprimir Saludos ![]()
__________________ ------------------------------------------------ La paciencia es el rey de la ciencia ------------------------------------------------ |