Interacción con MySQL u otras bases de datos

La conexión a MySQL y uso del mismo puede generar muchos errores, como veremos más adelante. Por sí misma, la función _mysqli_connect()_ puede generar al menos los siguientes errores.

Si el servidor de base de datos está caído:

Warning: mysqli_connect() [function.mysqli-connect.php]: Can't
   connect to MySQL server on 'localhost' (10061) in
   C:\wamp\www\sesion05\index.php on line ...

Si no existe la dirección del _host_ (192.168.100.1) donde se encuentra alojado el servidor de base de datos:

Warning: mysqli_connect() [function.mysqli-connect.php]: Can't
   connect to MySQL server on '192.168.100.1' (10060) in
   C:\wamp\www\sesion05\index.php on line ...

Si no tenemos permisos para conectarnos a esa base datos:

Warning: mysqli_connect() [function.mysqli-connect.php]: Access
   denied for user 'root'@'localhost' (using password: NO) in
   C:\wamp\www\sesion05\index.php on line 4

Si vemos la descripción de la función _mysqli_connect()_ en el manual de PHP vemos que devuelve false cuando se produce un error. Esto significa que este tipo de errores se pueden detectar y corregir fácilmente. Si no detenemos la ejecución del _script_ y procesamos estos errores, la secuencia de comandos continuará con la ejecución del mismo. Como ya veremos en la parte de conexión a bases de datos MySQL con PHP, los pasos siguientes serían ejecutar una consulta, obtener y mostrar esos resultados al usuario. Si la conexión con la base de datos falla, le mostremos al usuario una secuencia de errores en cadena, algo realmente poco profesional.

Resumiendo, tendremos que comprobar todas las solicitudes que realicemos a la base de datos. Como sabemos, existe una diferencia entre una consulta fallida y una consulta que simplemente no puede devolver datos o afectar a ninguna fila. Una consulta que contenga errores sintácticos SQL o que haga referencia a bases de datos, tablas o columnas que sí existen puede fallar, por ejemplo la siguiente consulta:

select * from tabla_inexistente;

fallaría porque el nombre de la tabla no existe y genera un número y un mensaje de error (#1146 - Table 'tabla\_inexistente' doesn't exist) que se pueden recuperar con las funciones _mysqli_errno()_ o _mysqli_error()_.

Una consulta SQL sintácticamente válida y que haga referencia solamente a bases de datos, tablas y columnas que existan no fallará. Sin embargo, puede que no devuelva resultados si se realiza en una tabla vacía o busca datos que no existen. Por ejemplo, si nos conectamos a nuestra base de datos de proweb y buscamos un libro por un autor que no existe, tendremos que comprobar si esa consulta ha devuelto un resultado mayor que 0 y si no es así, mostrar un mensaje al usuario diciendo que esa consulta no tiene resultados.

Más adelante veremos en detalle las funciones relacionadas con la conexión a bases de datos, más concretamente con MySQL.

results matching ""

    No results matching ""