Foros del Web » Programando para Internet » PHP »

Error al insertar registro

Estas en el tema de Error al insertar registro en el foro de PHP en Foros del Web. Hola a tod@s! Bueno, recientemente me cambie de hosting, debido a que el anterior pasó de lo malo a lo pésimo, con lo cual venían ...
  #1 (permalink)  
Antiguo 26/03/2008, 13:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Error al insertar registro

Hola a tod@s!

Bueno, recientemente me cambie de hosting, debido a que el anterior pasó de lo malo a lo pésimo, con lo cual venían caidas de horas. En fin, realicé el cambio y subi todos mis archivos, pero noté que a la hora de querer insertar un registro nuevo a través del formulario correspondiente, al utilizar signos como ~ o vocales con acento, me da el siguiente error (cosa que en el host pasado no sucedía):

Código:
Incorrect string value: '\xE9mo' for column 'descripcion' at row 1
\xE9 -> letra con acento.

¿A qué se debe este error?

Gracias de antemano.

Saludos.

  #2 (permalink)  
Antiguo 28/03/2008, 15:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Error al insertar registro

Se me había olvidado mencionar que utilizo MySQL y los cotejamientos están en latin1.

Saludos.

  #3 (permalink)  
Antiguo 28/03/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Error al insertar registro

Hola Dark_Rulo

¿Cual es el código que utilizas a la hora de hacer tus inserciones?

Saludos.
  #4 (permalink)  
Antiguo 28/03/2008, 17:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Error al insertar registro

Hola, GatorV. De momento no encontré mi USB, jeje. Vaya lio, pero bueno.

En sí es un insert que se realiza a través de un formulario. Y para limpiar las cadenas, sólo uso la siguiente función:

Código PHP:
<?php

function limpiar($texto)
{
    
$texto htmlspecialchars(trim(addslashes(stripslashes($texto))));
    
    return 
$texto;
}

?>
Ahora, como te darás cuenta, eso debería convertir los acentos y demás signos a HTML (por ejemplo: á -> &aacute), pero no es así, sino que al envio, la "á" se transforma en esos símbolos raros que puse en el primer post y marca el error de "Invalid string value".

Saludos.

  #5 (permalink)  
Antiguo 28/03/2008, 17:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Error al insertar registro

¿Hay alguna razón por la que uses strip y add? Recuerda el funcionamiento de htmlspecialchars.

Prueba mejor hacer una función así:
Código PHP:
function limpiar$texto ) {
       if( 
get_magic_quotes_gpc() ) {
                    
$texto stripslashes$texto );
       }

       
$texto htmlspecialchars$texto );

       return 
addslashes$texto );

Saludos.
  #6 (permalink)  
Antiguo 28/03/2008, 17:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Error al insertar registro

Entendido. Ahora bien, como comente, la función debería transformar el texto a HTML, pero no lo hace (además de que convierte las tildes a cosas como "\xE9"), y marca ese error y por ende el registro no se inserta. ¿Podría ser un error de codificación? No entiendo realmente qué sea. El registro se inserta sin problemas cuando no se usan acentos, pero cuando se utilizan, da ese error.

Saludos.

  #7 (permalink)  
Antiguo 28/03/2008, 17:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Error al insertar registro

hola

prueba esta funcion que tambien hace lo mismo, a ver si te sale bien y si no verifica la codificacion de la BD utf-8

http://es2.php.net/manual/es/function.htmlentities.php

Un saludo
  #8 (permalink)  
Antiguo 28/03/2008, 18:40
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Error al insertar registro

Bueno, curiosamente se soluciono cambiando el cotejamiento de la conexión en el phpmyadmin. Lo raro es que ya lo había hecho, y ahora funcionó.

Saludos y gracias a todos por sus respuestas.

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 12:00.