Foros del Web » Programando para Internet » PHP »

mysql_real_escape_string() mal aplicado?

Estas en el tema de mysql_real_escape_string() mal aplicado? en el foro de PHP en Foros del Web. Amigos Gracias Por leerlo estoy haciendo un sistema de registro de notas. me encuentro en la seccion donde inserto la nota y he decidido utilizar ...
  #1 (permalink)  
Antiguo 21/10/2008, 13:12
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años, 1 mes
Puntos: 7
Pregunta mysql_real_escape_string() mal aplicado?

Amigos Gracias Por leerlo

estoy haciendo un sistema de registro de notas. me encuentro en la seccion donde inserto la nota y he decidido utilizar la funcion mysql_real_escape_string(), para darle un grado mas de seguridad, pero nosé si utilizo mal la funcion o que, ya que luego al tratar de ejecutar la consulta con mysql_query, me muestra este error:

Cita:
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 '\'1-9\', \'18\', \'2008\', \'2\', \'2008-10-21\', \'bien\', \'6.4\', \'Ta' at line 1
la consulta queda asi al al aplicar la funcion:

Cita:
INSERT INTO notas_parciales(rut, asignatura, ano, semestre, fecha, observacion, nota, sede, carrera) VALUES(\'1-9\', \'18\', \'2008\', \'2\', \'2008-10-21\', \bienl\', \'6.4\', \'Talca\', \'Técnico XXX\')
si ejecuto la consulta sin aplicarle la funcion mysql_real_escape_string esta se ejecuta bien e inserta los datos...

¿Que hago mal , ALguna sugerencia?

Gracias---->
__________________
Me junto con los que Saben, Queriendo Saber.

Última edición por ACX_POISON; 21/10/2008 a las 14:13
  #2 (permalink)  
Antiguo 21/10/2008, 14:02
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
Respuesta: mysql_real_escape_string() mal aplicado?

Con ver solo la consulta, seguramente tu tienes las siguientes variables:

Código PHP:
$rut "'12564879-K'";
$fecha "'2008-21-10'";
$nota "'5.6'"
(Ojo con las comillas simples dentro de la cadena)

Son esas variables las cuales le aplicas la función e integras en la consulta.

Si es así, entonces estas mal, la idea de la función es que escapes los caracteres que podrían ser inseguros, pero que sean parte del contenido, y no de la estructura de la consulta. Tu agregaste las comillas simples como parte del contenido que quieres agregar, y no como representacion de una cadena en ese campo.

La mejor forma de preparar la consulta es la siguiente:

Código PHP:
$sql sprintf("INSERT INTO notas_parciales(rut, asignatura, ano, semestre, fecha, observacion, nota, sede, carrera) VALUES('%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s')"
    
mysql_real_escape_string($rut),        // ej: 16897564-5, y no '16897564-5'
    
mysql_real_escape_string($asignatura),
    
$anio,
    
$semestre,
    
date("Y-m-d"),
    
mysql_real_escape_string($observacion),
    
$nota,
    
mysql_real_escape_string($sede),
    
mysql_real_escape_string($carrera)
); 
De esa forma te aseguras que en los campos que sean numericos, se inserte efectivamente un numero y en los texto lo mismo, y las comillas forman parte de la consulta y no del contenido.

Espero que me hallas entendido la idea
__________________
KIBIT.cl
  #3 (permalink)  
Antiguo 21/10/2008, 14:15
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: mysql_real_escape_string() mal aplicado?

Si te entendi y la voy a probar

Gracias, despues comento
__________________
Me junto con los que Saben, Queriendo Saber.
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 04:22.