Abundando en respuesta yasaluyari
's me gustaría seguir con algo como esto:
sólo podemos modificar nuestra mysql_query de la siguiente manera:
function mysql_catchquery($query,$emsg='Error submitting the query'){
if ($result=mysql_query($query)) return $result;
else throw new Exception($emsg);
}
Ahora podemos simplemente utilizar de esta manera, un buen ejemplo:
try {
mysql_catchquery('CREATE TEMPORARY TABLE a (ID int(6))');
mysql_catchquery('insert into a values(666),(418),(93)');
mysql_catchquery('insert into b(ID, name) select a.ID, c.name from a join c on a.ID=c.ID');
$result=mysql_catchquery('select * from d where ID=7777777');
while ($tmp=mysql_fetch_assoc($result)) { ... }
} catch (Exception $e) {
echo $e->getMessage();
}
Tenga en cuenta lo hermoso que es. Cada vez que cualquiera de los qq falla, nos encontramos con nuestros errores. Y también puede observar que no necesitamos ahora almacenar el estado de las consultas de escritura en una variable $result
para la verificación, porque nuestra función ahora lo maneja por sí mismo. Y de la misma manera que maneja las selecciones, simplemente asigna el resultado a una variable como lo hace la función normal, pero maneja los errores dentro de ella.
También tenga en cuenta, no es necesario para mostrar los errores reales, ya que tienen gran riesgo para la seguridad, sobre todo por lo que con esta extensión obsoleta. Es por eso que nuestro valor predeterminado estará bien la mayor parte del tiempo. Sin embargo, si queremos notificar al usuario sobre algún error de consulta en particular, siempre podemos pasar el segundo parámetro para mostrar nuestro mensaje de error personalizado.
Sobre el uso de "o morir": http://www.phpfreaks.com/blog/or-die-must-die – outis
En cuanto a las excepciones frente a la comprobación de los valores devueltos, depende de cuántos puntos pueden generar errores. Con uno o dos puntos, iría con la comprobación de errores, ya que es más eficiente y más legible en este caso. Una vez que aciertes tres o más comprobaciones de error en un bloque de código, las excepciones se vuelven más legibles. Se trata de reducir la complejidad ciclomática. Tenga en cuenta que esto cubre el punto en que maneja el error; si habla de errores de señalización, terminará con diferentes pautas. – outis