Actualización de funciones PHP para acceso a MySQL

  • Por
  • PHP
Las nuevas versiones de PHP ofrecen juegos de funciones MySQL diferentes de los tradicionales, que implementan diversas mejoras en la gestión de bases de datos.

PHP está en constante evolución y prueba de ello son las novedades que venimos a comentar en este artículo. Se trata de las nuevas funciones de acceso a bases de datos MySQL que están disponibles desde PHP 5, con nombres diferentes a las funciones disponibles en el pasado y que también tienen algunos cambios en el modo de trabajar. Las nuevas funciones están creadas para dar respuesta a diversas mejoras que el sistema gestor de bases de datos MySQL ha incorporado recientemente.

Este es un tema fundamental, sobre todo para las personas que conocen PHP desde hace tiempo, que como yo, estábamos acostumbrados a usar un juego de funciones que a día de hoy se encuentra obsoleto y que no se recomienda utilizar. Realmente, en el momento de escribir este artículo las funciones de MySQL antiguas todavía, se pueden usar, pero la previsión es que se eliminen en PHP 5.5, por lo que resulta imprescindible actualizar nuestros conocimientos.

Afortunadamente, es bastante sencillo el paso a las nuevas funciones de MySQL, puesto que el esquema de funcionamiento es prácticamente el mismo, así como los nuevos nombres de funciones, que tienen muy pocas variaciones. Por lo tanto, si te has leído el Manual de PHP de DesarrolloWeb.com y has aprendido con nosotros a trabajar con las bases de datos, no tendrás realmente muchos problemas en aprender las novedades que paso a relatar a continuación.

Dos tipos de funciones para acceso a las bases de datos MySQL

Una de las novedades que PHP nos ofrece en las recientes funciones de PHP es la incorporación de dos tipos aproximaciones al trabajo con MySQL, que ahora se puede hacer por procedimientos (funciones normales de toda la vida) y por objetos.

Nota: Antes sólo podíamos acceder a MySQL por funciones comunes, pero ahora también podemos acceder por medio de clases y objetos de programación orientada a objetos (POO). La incorporación en el API de métodos basados en POO hace patente que PHP está teniendo muy presente este paradigma de desarrollo dentro de su núcleo y que la tendencia en las nuevas versiones de PHP será la de potenciarlo aun más.

Funciones basadas en procedimientos

Como venimos haciendo toda la vida con PHP. Funciones normales y corrientes, que reciben parámetros y que devuelven valores.

Funciones basadas en POO

Realmente son constructores para obtener objetos y métodos a los que podemos acceder dentro de esos objetos para realizar las operaciones con la base de datos.

Hay que aclarar que ambas aproximaciones son perfectamente válidas y que no cambian las cosas que se pueden hacer desde una u otra. Por tanto, decantarnos por uno u otro modo no implicará ninguna ventaja en funcionalidad, ni tan siquiera de rendimiento. De hecho, ambos modos de trabajo son el "mismo perro con distinto collar". Por tanto, es tan válida una elección como la otra y nuestra preferencia será más bien por gustos o costumbres a la hora de desarrollar.

Nota: Lo que no se recomienda es en un mismo proyecto cambiar de uno a otro estilo de acceso a base de datos MySQL de manera arbitraria. Debemos tener en cuenta que realmente esa recomendación no es debido a que no te vaya a funcionar tu programa, o puedas tener algún problema determinado, sino más bien es una cuestión de estilo y claridad a la hora de mantener el código de tu proyecto.

Acceso a MySQL con funciones por procedimientos

En el mencionado Manual de PHP venimos ofreciendo ejemplos para acceso a base de datos con funciones de toda la vida. Por eso, en este artículo vamos a mostrar las diferencias que existen con respecto a las funciones antiguas, usando también código por procedimientos. Sin embargo, como verás a continuación, las funciones son prácticamente las mismas a las que se les ha agregado una "i". Por ejemplo, mysql_connect() pasa a ser mysqli_connect(). Los parámetros son los mismos en muchos casos, o muy parecidos.

Nota: este artículo no es un tutorial de acceso a bases de datos con PHP, para eso ya disponemos del manual de PHP en DesarrolloWeb.com. Realmente se trata de una serie de guías para poder reciclar nuestros conocimientos con el PHP de versiones anteriores.

Conexión con la base de datos: mysqli_connect()

Ahora indicamos también la base de datos a la que queremos conectarnos. Y atención, porque lo que nos devuelve la función no es un link o identificador de la conexión con la base de datos, sino un objeto. Pero aunque no sepas POO, no te preocupes por este detalle, pues poco nos importa a los desarrolladores, dado que vamos a usar ese objeto como si fuera simplemente el identificador de la conexión, o sea, vamos a usarlo como hacíamos anteriormente en PHP.

$conexion = mysqli_connect("localhost", "usuario", "clave", "mi_bbdd");

Cerrar la conexión: mysqli_close()

Tenemos que pasarle como parámetro siempre el objeto que obtuvimos al iniciar la conexión.

mysqli_close($conexion);

Ejecutar una consulta: mysqli_query()

Esta función es exactamente igual, aunque en este caso recibe obligatoriamente como primer parámetro el objeto de conexión a la base de datos que recibimos al conectarnos. El segundo parámetro es la sentencia SQL que se desea ejecutar en MySQL.

$resultado = mysqli_query($conexion, "select * from cliente");

Otro aspecto interesante es que nos devuelve un valor que puede ser, o bien un booleano para saber si la consulta se ejecutó con éxito, como en el caso de un "insert" o "delete", o bien un objeto resultado con un conjunto de registros en el caso de un "select".

Extraer un registro del conjunto de resultados: mysqli_fetch_array()

Esta función es exactamente igual, recibe el conjunto de resultados del que queremos sacar un registro. Devuelve en este caso un "array", pero está igualmente mysqli_fetch_object() que devolvería un objeto.

$fila = mysqli_fetch_array($resultado);

Contar el número de filas de un resultado: mysqli_num_rows()

También es exactamente igual, simplemente le pasamos el objeto conjunto de registros del que queremos saber el número de filas o registros que contiene.

$fila = mysqli_num_rows($resultado)

Conclusión

En general, como estás pudiendo comprobar, el sistema no varía mucho de lo que ya conoces en el pasado. Cambian nombres de funciones mínimamente y algún parámetro suelto aquí y allí.

Creo que el paso para usar las nuevas funciones MySQL es tan rápido que no tiene sentido seguir usando las funciones antiguas y además en breve el cambio será obligado porque los accesos antiguos que hacíamos a MySQL dejarán de funcionar.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Bartux

19/3/2013
Mostrar errores con "OR DIE"
Realicé una prueba con mysqli y me conecté sin problema, sin embargo yo acostumbro poner siempre un OR DIE en cada sentencia mysql y me doy cuenta que de esta manera no funciona. ¿Cual es la alternativa?... Saludos.

Alex Salgado

28/3/2013
PDO
Yo creo que PDO es una mejor opcion que opinan?