Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: gowend en 29 Noviembre 2012, 03:59 am



Título: inconveniente de funcionamiento de errores con mysql
Publicado por: gowend en 29 Noviembre 2012, 03:59 am
Hola a todos, voy al grano, tengo la tarea de realizar un por decir así sistema de errores, en una tabla llamada errores voy a insertar los errores de base de datos que ocurran en cualquier script del proyecto, yo utilizo mvc, pero lo voy a hacer de manera sencilla.

index.php

Código
  1. <?php
  2. require_once 'conexion.php';
  3.  
  4. mysq_select_db('test',$con);
  5.  
  6. $sql = "SELECT id, nombre FROM usuario LIMIT 25; ";
  7.  
  8. $resultado = mysql_query($sql,$con) or die (errorSql($_SERVER['PHP_SELF'],mysql_error()));
  9.  
  10. $reg = mysql_fetch_assoc($resultado);
  11. //resto del codigo
  12.  

conexion.php

Código
  1. <?php
  2. $host = "localhost";
  3. $user = "root";
  4. $pass = "";
  5.  
  6. $con = mysql_connect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
  7.  
  8. function errorSql($file,$error){
  9.  $sql = "INSERT INTO error (file,error) VALUES ('$file','$error');";
  10.  $insert = mysql_query($sql,$con) or die("Problemas en el Insert ".mysql_error());
  11.  if($insert) echo "Ha ocurrido un problema, hemos informado el inconveniente.";
  12. }
  13. ?>
  14.  

El inconveniente consiste en que cuando daño a proposito la consulta del index, se ejecuta bien la función, pero en la linea de conexion.php
Código
  1. $insert = mysql_query($sql,$con) or die("Problemas en el Insert ".mysql_error());
apareciendo en el navegador el informe de error de index. en el srcipt de conexion.php como si perteneciera a ese script, siendo que se paso por parametro a la funcion errorSql. Espero haya sido claro y si no puedo volver a explicarlo, espero me puedan ayudar con mi inconveniente y si no, pues ojala se aprenda un poco de este tema.


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: #!drvy en 29 Noviembre 2012, 04:39 am
Es lo que tiene el error reporting de mysql. De todos modos, no es nada recomendable mostrar el error real al visitante.. en todo caso guárdalo en un log o algo pero nunca muestres el error real en un script destinado al visitante.

PD: Te sugiero que uses mysqli. mysql se considera "desaconsejado" y es probable que quede marcado como obsoleto/eliminado en futuras versiones de PHP.


Saludos


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: gowend en 29 Noviembre 2012, 15:21 pm
En realidad no se deberia mostrar al usuario ni es lo que pretendo, lo que deseo es guardar el string del error en una tabla junto con el nombre del archivo en que se origino, pero no se puede ejecutar ese insert debido a que sale el error de mysql del archivo index.php en el script de conexion.php.


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: 2Fac3R en 30 Noviembre 2012, 03:10 am
La verdad es que no encuentro ningún error de sintáxis pero hay algo que me llamó la atención, no sé si es porque no lo he usado antes y no lo conozco o sea un "error" en el código.

A mi no me funciona así:

Código
  1. $con = mysql_connect($host, $user, $pass) or trigger_error(mysql_error(),E_USER_ERROR);
  2.  

Prefiero usar el típico "or die()" y de esa manera si funciona.
PD: No he probado todo el código, otro error posible sería relacionado con la conexión a la bd, aunque no creo.
Zalu2


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: gowend en 5 Diciembre 2012, 20:54 pm
En realidad no hay ningun error de sintaxís, lo que quiero es registrar en una tabla los (posibles) errores que ocurran en una ejecución. Y en cuanto al trigger_error, era el unico que no me detenia las siguiente funciones de mysql con el error anterior.


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: Servia en 17 Diciembre 2012, 16:18 pm
En realidad no hay ningun error de sintaxís, lo que quiero es registrar en una tabla los (posibles) errores que ocurran en una ejecución. Y en cuanto al trigger_error, era el unico que no me detenia las siguiente funciones de mysql con el error anterior.

Mediante error_log ya puedes guardarlo todo en un mismo archivo, para nada es recomendable que lo guardes en la db, acabarás ignorando tales errores. Evidentemente mucho peor es hacer el die.
Piensa por un momento que el mySQL está caído ¿Qué crees que pasará? Los procesos de PHP se acabarán bloqueando con la tontería del bucle.


Título: Re: inconveniente de funcionamiento de errores con mysql
Publicado por: gowend en 9 Enero 2013, 02:40 am
Tienes toda la razón, contemple en mis posibilidades la opción del error_log, pero pense que tal vez existía la forma de conseguirlo, pero tu punto es mas que claro. Gracias por tu comentario  ;)