Foros del Web » Programando para Internet » PHP »

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Estas en el tema de Warning: mysql_real_escape_string() [function.mysql-real-escape-string] en el foro de PHP en Foros del Web. Estoy creando un sistema de noticias sencillito, con comentario y demás. Tengo el siguiente codigo: Código PHP: <?php require( 'sql3.php' ); $conexion  =  connection2 (); ...
  #1 (permalink)  
Antiguo 04/02/2009, 12:11
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Estoy creando un sistema de noticias sencillito, con comentario y demás. Tengo el siguiente codigo:

Código PHP:
<?php

require('sql3.php');
$conexion connection2();

etc.....etc...

function 
add_comment($id_noticia$id_usuario$comentario$fecha) {
        global 
$conexion;
        
$query "INSERT INTO comentarios(ID_NOTICIA, ID_USUARIO, COMENTARIO, FECHA) VALUES('".mysql_real_escape_string($id_noticia)."', '".mysql_real_escape_string($id_usuario)."', '".mysql_real_escape_string($comentario)."', '".mysql_real_escape_string($fecha)."');";
        
$exec_query mysql_query($query$conexion);
        
mysql_close($conexion);
}

function 
add_noticia($titulo$corta$larga$imagen$autor$fecha$hora$categoria) {
        global 
$conexion;
        
$query "INSERT INTO noticias(TITULO, CORTA, LARGA, IMAGEN, AUTOR, FECHA, CATEGORIA) VALUES('".mysql_real_escape_string($titulo)."', '".mysql_real_escape_string($corta)."', '".mysql_real_escape_string($larga)."', '".mysql_real_escape_string($imagen)."', '".mysql_real_escape_string($autor)."', '".mysql_real_escape_string($fecha)." a las ".mysql_real_escape_string($hora)."', '".mysql_real_escape_string($categoria)."');";
        
$exec_query mysql_query($query$conexion);
        
mysql_close($conexion);
}
?>
Pues bien, el codigo de agregar noticias, funciona a la perfeccion. Las funciones las llamo desde otras paginas, las que tienen el formulario que uso. Como veis, son exactamente iguales, al igual que los formularios de envio. pero al añadir un comentario me tira este error:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO)

en la linea de los mysql_real_escape_string de el metodo add_comment.

Pero lo mas raro, es que, a la base de datos añade el comentario perfectamente.

He probado cambiando los datos de la conexion y nada. Probe tambien quitando los escape_string, pero, a parte de que no me gusta hacerlo, por cuestiones de seguridad, el script me duplica en comentario. Con los escape_string, no.

Este es el codigo con el que invoco al metodo:
Id noticia e id comment los paso por campo oculto:

Código PHP:

etc
...etc...

$id_noticia $_POST['id_noticia'];
$id_usuario $_POST['id_usuario'];
$comentario addSmilies($_POST['comment']);
$fecha date('d/M/Y');
add_comment($id_noticia$id_usuario$comentario$fecha);
if(
add_comment($id_noticia$id_usuario$comentario$fecha)){
echo 
"Comentario enviado";
}else{
echo 
"Fallo";


y todavia mas raro, es que el if que uso para comprobar que el script funciona, me devuelve "Fallo", como si el add_comment no se hubiese ejecutado.
Repito que el codigo identico de add_noticia funciona a la perfeccción.

Saludos y gracias anticipadas

Última edición por SetheR; 04/02/2009 a las 12:14 Razón: Cambio en php
  #2 (permalink)  
Antiguo 04/02/2009, 12: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
Respuesta: Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Prueba pasarle el segundo parámetro a mysql_real_escape_string() ya que es probable que se este intentando autoconectar y por eso te sale el warning.

Saludos
  #3 (permalink)  
Antiguo 04/02/2009, 12:47
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Muchas gracias. ya he subsanado el problema del mysql_real_escape_string(). La verdad, sabia que se lo podía pasar el parametro a la funcion, pero creia que no era indispensable.

Ahora mi segundo problema. Se me duplican los comentarios. Creo que el problema está en el if de la segunda parte.

Sería mejor meter la función en una varialbe booleana y no tener que escribirla dos veces. Porque si quito el add_comment que va antes del IF, me envia el mensaje, eso si, me sale la opcion del else...

Saludos y muchas gracias GatorV
  #4 (permalink)  
Antiguo 04/02/2009, 13:01
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: Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Solo quita el add_comment que esta antes del if y dejaran de duplicarse los mensajes.

Por cierto, en tus funciones agrega return true; o return false; y no cierres la conexion ahi, sino al final de tu script.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 05/02/2009, 04:35
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Warning: mysql_real_escape_string() [function.mysql-real-escape-string]

Muchas gracias a los dos, ya lo he subsanado. Lo de quitar uno de las dos funciones ya lo había hecho. Le puse los return a los metodos, pero bueno, la cosa es igual..

Ya tira, muchas gracias de nuevo
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 15:44.