Título: [SOLUCIONADO] No logro insertar en la BDD MySQL, que me estara fallando ? Publicado por: Diabliyo en 15 Abril 2008, 17:49 pm Hola:
Tengo problemas en cierta parte de mi codigo, en el cual no logro insertar un campo tipo TEXT (mensaje), el resultado al intento de insercion me retorna un error de sintaxis un poco rara :S !!... Ahi les va mas informacion: Tabla NOTICIAS Código: //esta es la TABLA Por lo tanto, intento insertar el contenido, asumiendo que el formulario es este: Código: echo "<form action=\"index.php?id=noticias&mov=agregar_noticia&id_src=". $ctl. "\" method=\"POST\">"; Y el texto puesto como ejemplo en el formulario es este: Código: Titulo: Bienvenido al Sitio !! Y el codigo de formacion de trama e insercion es el siguiente: Código: <?php El error que muestra es el siguiente: Código: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version Los datos como es ovio, no se insertan :( y el problema persiste :S !!.... Pero es importante mencionar, que si en el formulario omito este pedazo de texto: Código: ..:: SIE-Group.net ::.. El mensjae se inserta con exito... :D Que puedo hacer ?? Título: Re: No logro insertar un mensaje en la BDD MySQL, que me estara fallando ??? Publicado por: Hans el Topo en 16 Abril 2008, 00:24 am no es problema de la consulta, es problema de lo que haces para enviar la consulta
si no me equivoco separas los campos por el carácter : y como eso lleva : pués al dividir los trozos de los campos, supongo que creará más valores que campos el problema radica en esa función insertar_bdd( "NOTICIAS", $valores ) que no has puesto xD la solución sería enviarle un array con los valores de los campos en vez de eso separado por caracteres Título: Re: No logro insertar un mensaje en la BDD MySQL, que me estara fallando ??? Publicado por: Diabliyo en 16 Abril 2008, 04:52 am no es problema de la consulta, es problema de lo que haces para enviar la consulta si no me equivoco separas los campos por el carácter : y como eso lleva : pués al dividir los trozos de los campos, supongo que creará más valores que campos el problema radica en esa función insertar_bdd( "NOTICIAS", $valores ) que no has puesto xD la solución sería enviarle un array con los valores de los campos en vez de eso separado por caracteres Asi es mi estimado... creo que para ese rato me cicle demasiado pensando tanto :S !!.. Pero ahora que estoy con mas calma asimilo todo jejeje... Ciertamente el simblo ':' es el que utilizo como delimitador para determinar el numero de valores enviados, despues el simbolo '=' lo utilizo como delimitador para obtener la variable y el valor y asi realizar la insercion en la base de datos... Aqui te dejo el code de la funcion insertar_bdd(), para ver si puede haber una forma de solucionar el probema sin necesidad de pasar la trama en formato de array y conservar los delimitadores... Porque estamos hablando de un buen de lineas a modificar si es que es necesario pasar la trama en forma de array :(. Código: function insertar_bdd( $base_t, $valores ) Título: Re: No logro insertar un mensaje en la BDD MySQL, que me estara fallando ??? Publicado por: Diabliyo en 16 Abril 2008, 05:03 am Hola:
Como primer instancia y evitar generacion de variables de mas (por repeticion del delimitado ':')... Es que, dentro de la funcion insertar_bdd() coloque un condicional en donde tome el numero de CAMPOS de la tabla a donde se desea insertar valores, y que este numero de CAMPOS sea igual o menos al numero de valores obtenidos despues de hacer el corte con la funcion: sizeof(($buf= explode( ":", $valores )))... Pero, no se me ocurre como poder seguir utilizando como delimitador ':' y que el usuario pueda usar este mismo simbolo en sus noticias :( !! bye bye Título: Re: No logro insertar un mensaje en la BDD MySQL, que me estara fallando ??? Publicado por: Hans el Topo en 16 Abril 2008, 11:25 am tienes que hacerlo por array
no tiene sentido utilizar caracteres como delimitadores ya que en cuanto utilicen ese caracter la consulta petara $valores=array("campo"=>"valor","campon"=>"valorn"); luego vas recorriendo la array a la hora d formar la consulta y listo Título: Re: No logro insertar un mensaje en la BDD MySQL, que me estara fallando ??? Publicado por: Diabliyo en 18 Abril 2008, 02:49 am Hola:
Gracias por ayuda Hans el Topo, finalmente he corregido el code y ya quedo... Para los curiosos, aqui les va la solucion: El procedimiento de insercion teoricamente es el siguiente: 1- realizar una trama con todas las variables y valores. 2- Enviar la trama a una funcion (insertar_bdd( "NOMBRE_TABLE", $trama )) y que desifre la trama para despues insertar. El PROCEDIMIENTO ANTIGUO ERA: Generar una trama utilizando como delimitador el simbolo ':', pero conforme la practica y testeo resulto inutil el delimitador, ya que si el usuario generaba un mensaje o titulo que contenga el simbolo ':', la insercion seria un caos y daria error.... Código: <?php La SOLUCION AL PROBLEMA es realizar una trama pero sin delimitador, que la trama sea un array, pero donde la palabra clave de cada miembro del arreglo sera el nombre de la variable y pues el valor, seria el valor para dicha variable. Ejemplo de array comun: Código: [0]="carlos" Ejemplo de array con clave/valor: Código: [nombre1]="carlos" Asi que generamos una trama mediante arrays, y pasamos la trama a la funcion insetar_bdd( "NOMBRE_TABLA", $trama ). El code seria: Código: <?php IMPORTANTE !!! La funcion insertar_bdd() debe ser modificada y quedaria asi: Código: <?php |