Foros del Web » Programando para Internet » PHP »

problemas con mysql_real_escape_string

Estas en el tema de problemas con mysql_real_escape_string en el foro de PHP en Foros del Web. Hola como estan? mi problema es el siguiente intento hacer un insert en la base de datos pasando antes la consulta por mysql_real_escape_string esta funciona ...
  #1 (permalink)  
Antiguo 17/01/2010, 08:17
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
problemas con mysql_real_escape_string

Hola como estan? mi problema es el siguiente intento hacer un insert en la base de datos pasando antes la consulta por mysql_real_escape_string esta funciona me devuelve la cadena correctamente pero no me guarda el registro en la base de datos, si comento la linea del mysql_real_escape_string lo guarda correctamente ya no se que puede ser

utilizo esta metodo dentro de una clase que funciona bien porque la probe en varios servidores y ahora que la estoy aplicando en este me falla

Código PHP:
private function security($string) {
        
$string strip_tags($string);
        
$string htmlentities($string);
        
$string mysql_real_escape_string($string);
        return 
$string;
}

public function 
query($sql) {
        
$sql $this->security($sql);
        
$this->consulta mysql_query($sql$this->link);

como dije comentando la lines del real_escape funciona, el $sql despues de pasarle la funcion me devuelve la cadena escapada de esta forma

Código PHP:
INSERT INTO usuarios (usuariogrupopasswdemailfecha_creacionsaltVALUES (admin, , 059f8de7b0f6ec45e7d14617c191c33e, , NOW(), 4d8af8353f925963c9451c41a7a49440
si tiro la cadena a mano en phpmyadmin me guarda correctamente el registro, me fije y tengo magic_quotes desactivado ya no se que pueda llegar a ser

saludos
  #2 (permalink)  
Antiguo 17/01/2010, 08:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problemas con mysql_real_escape_string

Te da algun mensaje de error?

Agrega lo que esta en rojo:
$this->consulta = mysql_query($sql, $this->link) or die(mysql_error());

Supongo que el codigo VALUES (admin, , 059f8de7b0f6ec45e7d14617c191c33e, , NOW(), 4d8af8353f925963c9451c41a7a49440) lo hiciste aqui como ejemplo, porque le faltan comillas a todas las cadenas.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/01/2010, 09:01
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
Respuesta: problemas con mysql_real_escape_string

hola Triby,
me da error de sintaxis, lo raro es que si no le paso el escape guarda bien, me sale esto

I
Código PHP:
NSERT INTO usuarios (usuariogrupopasswdemailfecha_creacionsaltVALUES ('admin\', \'\', \'f734da859966339ff744c1b6cce8a7ba\', \'\', NOW(), \'a57393debb45cd1a3f37f75357204fcd\')

//La de arriba es lo que imprime el string antes de ser escapado
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin\', \'\', \'f734da859966339ff744c1b6cce8a7ba\', \'\', NOW(), \'a57393debb' 
at line 1 
ahora si me tira error de sintaxis el phpmyadmin y no veo donde, no esta bien escapado?, horas sin dormir ya no veo nada si alguien lo ve que me diga porfavor

INSERT INTO usuarios (usuario, grupo, passwd, email, fecha_creacion, salt) VALUES (\'admin\', \'\', \'166c16532f2d56286a9c5559c9804ce7\', \'\', NOW(), \'2a70091c3434a2c445d6d538b240b4ec\')

Última edición por Adell; 17/01/2010 a las 09:07
  #4 (permalink)  
Antiguo 17/01/2010, 09:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problemas con mysql_real_escape_string

Ok, el problema parecen ser las comillas, la primera de 'admin\' no esta escapada, para poder encontrar mas facil el problema coloca la linea completa de tu consulta... supongo que seria:

mysql_query('INSERT INTO bla bla bla VALUES (bla bla bla)');

Edito:

Tambien puede ser que estes encerrando la cadena entre comillas dobles, con lo que las comillas sencillas no deberian estar escapadas.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 17/01/2010, 09:09
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
Respuesta: problemas con mysql_real_escape_string

ahi coloque bien lo que me devuelve la cadena antes de hacer el query

INSERT INTO usuarios (usuario, grupo, passwd, email, fecha_creacion, salt) VALUES (\'admin\', \'\', \'166c16532f2d56286a9c5559c9804ce7\', \'\', NOW(), \'2a70091c3434a2c445d6d538b240b4ec\')

no veo el error, de hecho tire la consulta a mano y me tira error de sintaxis

EDITO:
el real_escape se lo paso a esta cadena

Código PHP:
Ver original
  1. $sql = "INSERT INTO usuarios (usuario, grupo, passwd, email, fecha_creacion, salt) VALUES ('$new_user->user', '$new_user->group', '$new_user->passwd', '$new_user->mail', NOW(), '$new_user->salt')";

y luego le aplico las funciones mencionadas que estan en la clase mas arriba
  #6 (permalink)  
Antiguo 17/01/2010, 09:22
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
Respuesta: problemas con mysql_real_escape_string

El error es claramente que esta escapando las comillas simples, algo falla ahi y no se porque, se supone que no deberia haber problema con eso, pero evidentemente hay algo que no estoy viendo
  #7 (permalink)  
Antiguo 17/01/2010, 11:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: problemas con mysql_real_escape_string

Cita:
Iniciado por Adell Ver Mensaje
El error es claramente que esta escapando las comillas simples, algo falla ahi y no se porque, se supone que no deberia haber problema con eso, pero evidentemente hay algo que no estoy viendo
el problema es que estás escapando toda la consulta !!

y solo debes escapar los valores individuales...
Código PHP:
$sql "INSERT INTO tabla(foo) VALUES('" candy($bar) . "')"
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: Ninguno
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 14:02.