Extensiones Obsoletas en MySQL (Deprecated)


En un artículo anterior abordé el tema del uso de PDO u ORM a la hora de hacer transacciones con las bases de datos de nuestro sistemas. Si el cambio aún no te has decidido a hacerlo pues la siguiente noticia a cerca de las extensiones MySQL en PHP te harán pensar. La extensión MySQL se encuentra desde los inicios de la colaboración de PHP con el gestor de bases de datos MySQL, siendo en sus principios la preferida de los programadores. Resuelve el problema? es verdad y funciona pero sus fallas en la programación de hoy son evidentes, tanto es así que pasan a ser obsoletas desde la versión 5.5.0 y será eliminada en el futuro.

Opciones? son muchas y ya hemos hablado de ellas, más eficientes, mejor organizadas, pensadas y orientadas a los esquemas modernos de programación. Orientadas a objeto y desde sus inicios desarrolladas y pensadas para trabajar con Modelo-Vista-Controlador.

A continuación les traigo una tabla de contenidos con las funciones de la extensión MySQL que ya a partir de 5.5.0 generan un error de nivel E_DEPRECATED.

  • mysql_affected_rows — Obtiene el número de filas afectadas en la anterior operación de MySQL
  • mysql_client_encoding — Devuelve el nombre del conjunto de caracteres
  • mysql_close — Cierra una conexión de MySQL
  • mysql_connect — Abre una conexión al servidor MySQL
  • mysql_create_db — Crea una base de datos MySQL
  • mysql_data_seek — Mueve el puntero de resultados interno
  • mysql_db_name — Recupera el nombre de la base de datos desde una llamada a mysql_list_dbs
  • mysql_db_query — Selecciona una base de datos y ejecuta una consulta sobre la misma
  • mysql_drop_db — Elimina (DROP) una base de datos MySQL
  • mysql_errno — Devuelve el valor numérico del mensaje de error de la última operación MySQL
  • mysql_error — Devuelve el texto del mensaje de error de la operación MySQL anterior
  • mysql_escape_string — Escapa una cadena para ser usada en mysql_query
  • mysql_fetch_array — Recupera una fila de resultados como un array asociativo, un array numérico o como ambos
  • mysql_fetch_assoc — Recupera una fila de resultados como un array asociativo
  • mysql_fetch_field — Obtiene la información de una columna de un resultado y la devuelve como un objeto
  • mysql_fetch_lengths — Obtiene la longitud de cada salida en un resultado
  • mysql_fetch_object — Recupera una fila de resultados como un objeto
  • mysql_fetch_row — Obtiene una fila de resultados como un array numérico
  • mysql_field_flags — Obtiene las banderas asociadas al campo especificado de un resultado
  • mysql_field_len — Devuelve la longitud del campo especificado
  • mysql_field_name — Obtiene el nombre del campo especificado de un resultado
  • mysql_field_seek — Establece el puntero del resultado en un índice de campo especificado
  • mysql_field_table — Obtiene el nombre de la tabla en la que está el campo especificado
  • mysql_field_type — Obtiene el tipo del campo especificado de un resultado
  • mysql_free_result — Libera la memoria del resultado
  • mysql_get_client_info — Obtiene información del cliente MySQL
  • mysql_get_host_info — Obtener información del anfitrión de MySQL
  • mysql_get_proto_info — Obtener información del protocolo MySQL
  • mysql_get_server_info — Obtiene información del servidor MySQL
  • mysql_info — Obtiene información sobre la consulta más reciente
  • mysql_insert_id — Obtiene el ID generado en la última consulta
  • mysql_list_dbs — Lista las bases de datos disponibles en un servidor MySQL
  • mysql_list_fields — Lista los campos de una tabla de MySQL
  • mysql_list_processes — Lista los procesos de MySQL
  • mysql_list_tables — Lista las tablas de una base de datos MySQL
  • mysql_num_fields — Obtiene el número de campos de un resultado
  • mysql_num_rows — Obtener el número de filas de un conjunto de resultados
  • mysql_pconnect — Abre una conexión persistente a un servidor MySQL
  • mysql_ping — Efectuar un chequeo de respuesta (ping) sobre una conexión al servidor o reconectarse si no hay conexión
  • mysql_query — Enviar una consulta MySQL
  • mysql_real_escape_string — Escapa caracteres especiales en un string para su uso en una sentencia SQL
  • mysql_result — Obtener datos de resultado
  • mysql_select_db — Seleccionar una base de datos MySQL
  • mysql_set_charset — Establece el conjunto de caracteres del cliente
  • mysql_stat — Obtiene el estado actual del sistema
  • mysql_tablename — Obtiene el nombre de la tabla de un campo
  • mysql_thread_id — Devuelve el ID del hilo actual
  • mysql_unbuffered_query — Envía una consulta SQL a MySQL, sin recuperar ni almacenar en búfer las filas de resultados

En la página oficial de PHP ya aparece en cada una de estas funciones una Advertencia que dicta lo siguiente:

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y P+F relacionadas para más información. Las alternativas a esta función incluyen:

mysqli_connect()
PDO::__construct()

Entre las alternativas incluiremos cualquiera de los ORM existentes, siendo mi preferido Doctrine.

Algunos podrán decir, no actualizo el PHP, no es la solución. Hay que evolucionar y este salto es totalmente beneficioso y necesario. Todavía encuentro viejos scripts o aplicaciones web que usan estas extensiones para todas sus transacciones con los datos, obviando cualquier tipo de protección contra SQL Injection u otra forma de ataque existente las cuales ya su protección viene implementada en las alternativas.

Latest posts by Leroy Ley (see all)