sql >> Base de Datos >  >> RDS >> Mysql

La extensión mysql está obsoleta y se eliminará en el futuro:use mysqli o PDO en su lugar

  1. ¿Por qué sucede esto?

    Todo el ext/mysql Extensión de PHP, que proporciona todas las funciones nombradas con el prefijo mysql_ , fue obsoleto oficialmente en PHP v5.5.0 y eliminado en PHP v7 .

    Se introdujo originalmente en PHP v2.0 (noviembre de 1997) para MySQL v3.20, y no se han agregado nuevas funciones desde 2006. Junto con la falta de nuevas funciones, existen dificultades para mantener un código tan antiguo en medio de vulnerabilidades de seguridad complejas.

    El manual contiene advertencias contra su uso en código nuevo desde junio de 2011.

  2. ¿Cómo puedo solucionarlo?

    Como sugiere el mensaje de error, hay otras dos extensiones de MySQL que puede considerar:MySQLi y PDO_MySQL , cualquiera de los cuales se puede usar en lugar de ext/mysql . Ambos han estado en el núcleo de PHP desde v5.0, por lo que si está utilizando una versión que arroja estos errores de obsolescencia, es casi seguro que puede comenzar a usarlos de inmediato, es decir, sin ningún esfuerzo de instalación.

    Difieren ligeramente, pero ofrecen una serie de ventajas sobre la extensión anterior, incluida la compatibilidad con API para transacciones, procedimientos almacenados y declaraciones preparadas (por lo tanto, proporcionan la mejor manera para derrotar ataques de inyección SQL ). El desarrollador de PHP Ulf Wendel ha escrito una comparación exhaustiva de las características .

    Hashphp.org tiene un excelente tutorial sobre cómo migrar desde ext/mysql a DOP .

  3. Entiendo que es posible suprimir los errores de desaprobación configurando error_reporting en php.ini para excluir E_DEPRECATED :

    error_reporting = E_ALL ^ E_DEPRECATED
    

    ¿Qué pasará si hago eso?

    Sí, es posible suprimir dichos mensajes de error y continuar usando el antiguo ext/mysql prórroga por el momento. Pero realmente no deberías hacer esto —esta es una advertencia final de los desarrolladores de que es posible que la extensión no se incluya con versiones futuras de PHP (de hecho, como ya se mencionó, se eliminó de PHP v7). En su lugar, debe aprovechar esta oportunidad para migrar su aplicación ahora , antes de que sea demasiado tarde.

    Tenga en cuenta también que esta técnica suprimirá todos E_DEPRECATED mensajes, no solo los que tienen que ver con ext/mysql extensión:por lo tanto, es posible que no esté al tanto de otros cambios próximos a PHP que afectarían el código de su aplicación. Por supuesto, solo es posible suprimir los errores que surgen en la expresión en cuestión mediante el operador de control de errores -es decir. anteponiendo la línea relevante con @ —sin embargo, esto suprimirá todos errores generados por esa expresión, no solo E_DEPRECATED unos.

¿Qué debe hacer?

  • Estás comenzando un nuevo proyecto.

    No hay absolutamente ninguna razón para usar ext/mysql — elija una de las otras extensiones, más modernas, y coseche las recompensas de los beneficios que ofrecen.

  • Tiene (su propia) base de código heredada que actualmente depende de ext/mysql .

    Sería prudente realizar pruebas de regresión:realmente no debería cambiar nada (especialmente la actualización de PHP) hasta que haya identificado todas las posibles áreas de impacto, planificado en torno a cada una de ellas y luego probado minuciosamente su solución en un entorno de prueba.

    • Siguiendo una buena práctica de codificación, su aplicación se desarrolló de forma modular/ligeramente integrada y los métodos de acceso a la base de datos son independientes en un solo lugar que se puede cambiar fácilmente por una de las nuevas extensiones.

      Dedique media hora a reescribir este módulo para usar una de las otras extensiones más modernas; prueba a fondo. Más adelante puede introducir mejoras adicionales para cosechar las recompensas de los beneficios que ofrecen.

    • Los métodos de acceso a la base de datos están dispersos por todas partes y no se pueden cambiar fácilmente por una de las nuevas extensiones.

      Considere si realmente necesita actualizar a PHP v5.5 en este momento.

      Debería comenzar a planear reemplazar ext/mysql con una de las otras extensiones, más modernas, para que puedas cosechar las recompensas de los beneficios que ofrecen; también puede usarlo como una oportunidad para refactorizar sus métodos de acceso a la base de datos en una estructura más modular.

      Sin embargo, si tiene un problema urgente necesita actualizar PHP de inmediato, podría considerar suprimir los errores de desaprobación por el momento:pero primero asegúrese de identificar cualquier otro error de desaprobación que también se esté generando.

  • Está utilizando un proyecto de terceros que depende de ext/mysql .

    Considere si realmente necesita actualizar a PHP v5.5 en este momento.

    Verifique si el desarrollador ha publicado arreglos, soluciones alternativas u orientación en relación con este problema específico; o, en caso contrario, presionarlos para que lo hagan llamándoles la atención sobre este asunto. Si tiene una urgente necesita actualizar PHP de inmediato, podría considerar suprimir los errores de desaprobación por el momento:pero primero asegúrese de identificar cualquier otro error de desaprobación que también se esté generando.

    Es absolutamente esencial realizar pruebas de regresión.