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. Estoy agregando mysql_real_escape_string para limpiar variables, tengo este pedazo de codigo: $var=mysql_real_escape_string($_POST['r1']); $registro=mysql_query("select ".$EXP.", ".$AP.", ".$A.",from ".$PB." where ".$NG."='$var' "); while($reg=mysql_fetch_array($registro)){ $cod1=mysql_real_escape_string($reg[$EXP]); mysql_query("UPDATE ".$MC." SET ...
  #1 (permalink)  
Antiguo 03/09/2012, 21:05
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Pregunta problemas con mysql_real_escape_string

Estoy agregando mysql_real_escape_string para limpiar variables, tengo este pedazo de codigo:

$var=mysql_real_escape_string($_POST['r1']);
$registro=mysql_query("select ".$EXP.", ".$AP.", ".$A.",from ".$PB." where ".$NG."='$var' ");

while($reg=mysql_fetch_array($registro)){

$cod1=mysql_real_escape_string($reg[$EXP]);

mysql_query("UPDATE ".$MC." SET $EXP=$cod1 WHERE ".$NG."=1 ",$conexion);
mysql_query("UPDATE ".$MC." SET $AP=".$reg["$AP"]." WHERE ".$NG."=1 ", $conexion);
mysql_query("UPDATE ".$MC." SET $A=".$reg["$A"]." WHERE ".$NG."=1 ", $conexion);

}


pero en vez de imprimirme el valor de mi base de datos me imprime literalmente: $reg[$EXP], ya probe con comillas, sin comillas, etc. y ninguno dio resultado
  #2 (permalink)  
Antiguo 04/09/2012, 04:32
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: problemas con mysql_real_escape_string

No se si será porque $reg[$EXP] está mal me parece.
Creo que es $reg['EXP']
  #3 (permalink)  
Antiguo 04/09/2012, 09:13
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: problemas con mysql_real_escape_string

gracias, ya he probado de esa manera :s y no obtuve resultado, poniendolo asi como tu dices me tira este error

Notice: Undefined index: $EXP

lo cual no entiendo porque en mi consulta select estoy pidiendo esa variable... no se si habra un mysql_real_escape_string para arrays??
  #4 (permalink)  
Antiguo 04/09/2012, 09:18
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: problemas con mysql_real_escape_string

El uso está desaconsejado: http://es.php.net/mysql_real_escape_string/.

Yo suelo usar addslashes() que añade barras invertidas en las comillas y el apóstrofo inglés.
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #5 (permalink)  
Antiguo 04/09/2012, 11:57
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: problemas con mysql_real_escape_string

probe con addslashes, y mysqli, obteniendo estos resultados:

Notice: Undefined index: $EXP in C:

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given

porque no me reconoce la variable $reg[$EXP] ?? si esta incluida dentro del array. Ahora si quito la sentencia de real_escape si la reconoce
  #6 (permalink)  
Antiguo 04/09/2012, 16:39
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: problemas con mysql_real_escape_string

¿Podrías hacer un "var_dump( $EXP ):" y decir lo que te muestra por pantalla?
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios
  #7 (permalink)  
Antiguo 04/09/2012, 16:51
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

hasdpk, creo que hay una pequeña confusión, lo que está desaconsejado es el uso de la librería mysql y todas sus funciones relacionadas, debiendo usar en su lugar mysqli o PDO.

Ahora, si usas mysql o mysqli, es altamente recomendable que escapes los datos correctamente con mysql_real_escape_string() o mysqli_real_escape_string(), puesto que son las funciones nativas para tal efecto.

ANDRESDD, parece que todavía no te ha quedado claro que mysql_real_escape_string() se usa para escapar strings, cadenas, no datos numéricos y que cualquier entrada proveniente del usuario o manipulable en cualquier forma por él, debes validarla en cuanto a valor y tipo se refiere.

Haz un breve resumen de todas las variables que incluyes en ese código, porqué las creas?, de dónde toman su valor?, qué tipo de dato deben contener?, etc.

Con eso será más fácil decirte que estás haciendo mal y, por cierto, lo del var_dump() sería bueno que lo aplicaras también a $reg.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 05/09/2012, 00:02
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: problemas con mysql_real_escape_string

Gracias hasdpk y Triby, precisamente eso habia preguntado en otras discusiones pero siempre obtengo la misma respuesta "debes escapar variables" pero no me dicen en que tipo de variables es necesario hacerlo, solo se que las variables recibidas por Post o Get deben ir escapadas, pero ¿qué hay de las variables que yo saco de una tabla de mi base de datos y las actualizo en otra tabla de mi base de datos para presentar alguna grafica al usuario posteriormente? aqui no hay intervencion del usuario, entonces ¿debo escaparlas? tambien tengo botones select que solo envían números, ¿debo escapar la variable que recibe estos numeros?
  #9 (permalink)  
Antiguo 05/09/2012, 01:12
 
Fecha de Ingreso: abril-2008
Mensajes: 88
Antigüedad: 16 años
Puntos: 5
Respuesta: problemas con mysql_real_escape_string

Podrias tratar de escribir el query asi:
Código PHP:
mysql_query("UPDATE {$MC} SET {$EXP}={$cod1} WHERE {$NG} = 1 ",$conexion);
mysql_query("UPDATE {$MC} SET {$AP}={$reg[$AP]} WHERE {$NG} =1 "$conexion); 
parece raro... pero funciona... asi envio yo datos dentro de un arreglo en un string... es mas facil, limpio y por supuesto se ve profesional. ahora solo queda saber si las variables llevan algun valor y que estes usando PHP 5

Saludos y espero que te sirva.

Última edición por juanjoseab; 05/09/2012 a las 01:16 Razón: me falto el pedazo de código para el input de un valor de un array
  #10 (permalink)  
Antiguo 05/09/2012, 11:05
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: problemas con mysql_real_escape_string

es necesario que escape las variables enviadas desde una lista select que despliega los valores(que son numeros del 0 al 10) que estan en una tabla de una base de datos y los envía a otra tabla?
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 09:57.