Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Generar Log de consulta

Estas en el tema de Generar Log de consulta en el foro de PHP en Foros del Web. Buenos días. Mi duda va en como crear un "log" de las consultas que ejecuta determinado usuario en mi página. Lo que intento hacer, es ...
  #1 (permalink)  
Antiguo 03/08/2015, 01:52
 
Fecha de Ingreso: agosto-2015
Mensajes: 3
Antigüedad: 9 años, 3 meses
Puntos: 0
Generar Log de consulta

Buenos días. Mi duda va en como crear un "log" de las consultas que ejecuta determinado usuario en mi página.
Lo que intento hacer, es que por ejemplo si el usuario principal creó un usuario secundario, quede registrada en la tabla "log" la consulta que hizo ese usuario principal para crear al otro.
Por qué va esto? Porque solo el principal puede crear usuarios, y puede por ejemplo haber una queja de que no le funciona, entonces quiero saber si verdaderamente se ejecutó de manera correcta e ingresó todo perfecto mediante este log... (que guardaría la consulta que realizó y un datatime).

Cual es mi problema? No se como guardar la consulta que realizó dentro de un registro en otra tabla... Porque si lo pongo directamente, me va a tirar error de sintaxis...

Por ejemplo esta es una parte de la consulta en la que "crea" al otro usuario:

Código:
$sql="insert into usuarios_sec (id_usuario, contraseña, contraseña2, historial_de_logueo) select '$dni', '$c1', '$c2', null from dual where not exists (select * from usuarios_sec where id_usuario= '$dni');";
$res= mysql_query($sql,Conectar::con());
y quiero guardar todo el "$sql" en otra tabla.... si lo hago directo me va a tirar error de sintaxis...

Código:
$sql2="insert into logadm_$id VALUES (null, '$sql',now())";
$res=  mysql_query($sql2,  Conectar::con());

Hay alguna forma de poder generar este registro para guardar esas consultas que ejecuta el principal?

Espero que se haya entendido, desde ya, muchas gracias
  #2 (permalink)  
Antiguo 03/08/2015, 07:39
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Generar Log de consulta

usa
addcslashes
para el $sql
Código PHP:
$sql2="insert into logadm_$id VALUES (null,'".addcslashes($sql)."',now())";
$res=  mysql_query($sql2,  Conectar::con()); 
  #3 (permalink)  
Antiguo 03/08/2015, 12:29
 
Fecha de Ingreso: agosto-2015
Mensajes: 3
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Generar Log de consulta

Gracias por la pronta respuesta.

Estuve probando la función que me recomiendas, pero por sí sola no me funciona, espera un segundo parámetro. La estuve buscando y encontré que tengo que agregar los caracteres que deseo omitir...
Entonces busqué una función similar a esa que funciones directamente para consultas mysql y me encontré con esta:

mysqli_real_escape_string()

Supuestamente escapa a los caracteres que corresponden a una consulta, era exactamente lo que quería. La intento utilizar de esta manera:

$consul= mysqli_real_escape_string($sql);
$sql2="insert into logadm_$id VALUES (null, '$consul',now())";


Y me dice que espera 2 parámetros... Qué otro parámetro es ese? Estuve leyendo el manual de php (http://php.net/manual/es/mysqli.real-escape-string.php) y sinceramente no termino de comprender o de hacerlo funcionar.
Le agregué ese otro parámetro que dice el manual para probar si me funcionaba y me tira un nuevo error de que esa función espera sólo un parámetro.

Alguna idea?
  #4 (permalink)  
Antiguo 03/08/2015, 12:38
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Generar Log de consulta

debes cambiar o escapar los que te generen conflicto
un ejemplo serian las comillas
Código PHP:
$sql2="insert into logadm_$id VALUES (null,'".addcslashes($sql,"'")."',now())";
$res=  mysql_query($sql2,  Conectar::con()); 
  #5 (permalink)  
Antiguo 03/08/2015, 13:01
 
Fecha de Ingreso: agosto-2015
Mensajes: 3
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Generar Log de consulta

Genial, muchísimas gracias por la rápida solución. Ya no sabía para donde salir!!

Etiquetas: mysql+consulta, php+base+de+datos
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 21:15.