Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A extensão mysql está obsoleta e será removida no futuro:use mysqli ou PDO


  1. Por que isso está acontecendo?

    Todo o ext/mysql Extensão PHP, que fornece todas as funções nomeadas com o prefixo mysql_ , foi oficialmente obsoleto no PHP v5.5.0 e removido no PHP v7 .

    Ele foi originalmente introduzido no PHP v2.0 (novembro de 1997) para MySQL v3.20, e nenhum novo recurso foi adicionado desde 2006. Juntamente com a falta de novos recursos, há dificuldades em manter esse código antigo em meio a vulnerabilidades de segurança complexas.

    O manual contém avisos contra seu uso no novo código desde junho de 2011.

  2. Como posso corrigi-lo?

    Como a mensagem de erro sugere, existem duas outras extensões MySQL que você pode considerar:MySQLi e PDO_MySQL , qualquer um dos quais pode ser usado em vez de ext/mysql . Ambos estão no núcleo do PHP desde a v5.0, portanto, se você estiver usando uma versão que está lançando esses erros de descontinuação, quase certamente poderá começar a usá-los imediatamente, ou seja, sem qualquer esforço de instalação.

    Eles diferem um pouco, mas oferecem várias vantagens em relação à extensão antiga, incluindo suporte de API para transações, procedimentos armazenados e instruções preparadas (fornecendo assim o melhor caminho para derrotar ataques de injeção de SQL ). O desenvolvedor PHP Ulf Wendel escreveu uma comparação completa de os recursos .

    Hashphp.org tem um excelente tutorial sobre como migrar de ext/mysql para DOP .

  3. Entendo que é possível suprimir erros de suspensão de uso definindo error_reporting em php.ini para excluir E_DEPRECATED :
    error_reporting = E_ALL ^ E_DEPRECATED
    

    O que acontecerá se eu fizer isso?

    Sim, é possível suprimir tais mensagens de erro e continuar usando o antigo ext/mysql prorrogação por enquanto. Mas você realmente não deveria fazer isso —este é um aviso final dos desenvolvedores de que a extensão não pode ser empacotada com versões futuras do PHP (na verdade, como já mencionado, ela foi removida do PHP v7). Em vez disso, você deve aproveitar esta oportunidade para migrar seu aplicativo agora , antes que seja tarde.

    Observe também que esta técnica suprimirá todos E_DEPRECATED mensagens, não apenas aquelas relacionadas ao ext/mysql extensão:portanto, você pode não estar ciente de outras alterações futuras no PHP que afetariam o código do seu aplicativo. É claro que só é possível suprimir erros que surgem na expressão em questão usando o operador de controle de erros — ou seja precedendo a linha relevante com @ — no entanto, isso suprimirá todos erros gerados por essa expressão, não apenas E_DEPRECATED uns.

O que você deve fazer?


  • Você está iniciando um novo projeto.

    Não há absolutamente nenhuma razão para usar ext/mysql — escolha uma das outras extensões, mais modernas, e colha os frutos dos benefícios que elas oferecem.

  • Você tem (sua própria) base de código legada que atualmente depende de ext/mysql .

    Seria sensato realizar testes de regressão:você realmente não deveria estar alterando nada (especialmente atualizando o PHP) até que você tenha identificado todas as áreas potenciais de impacto, planejado em torno de cada uma delas e então testado exaustivamente sua solução em um ambiente de teste.

    • Seguindo as boas práticas de codificação, seu aplicativo foi desenvolvido de forma flexível/modular e os métodos de acesso ao banco de dados são todos autocontidos em um local que pode ser facilmente trocado por uma das novas extensões.

      Gaste meia hora reescrevendo este módulo para usar uma das outras extensões, mais modernas; teste minuciosamente. Você pode introduzir mais refinamentos posteriormente para colher os frutos dos benefícios que eles oferecem.

    • Os métodos de acesso ao banco de dados estão espalhados por toda parte e não podem ser trocados facilmente por uma das novas extensões.

      Considere se você realmente precisa atualizar para o PHP v5.5 neste momento.

      Você deve começar a planejar a substituição de ext/mysql com uma das outras extensões, mais modernas, para que você possa colher os frutos dos benefícios que elas oferecem; você também pode usá-lo como uma oportunidade para refatorar seus métodos de acesso ao banco de dados em uma estrutura mais modular.

      No entanto, se você tiver um pedido urgente precisar atualizar o PHP imediatamente, você pode considerar suprimir erros de depreciação por enquanto:mas primeiro certifique-se de identificar quaisquer outros erros de depreciação que também estejam sendo lançados.

  • Você está usando um projeto de terceiros que depende de ext/mysql .

    Considere se você realmente precisa atualizar para o PHP v5.5 neste momento.

    Verifique se o desenvolvedor lançou alguma correção, solução alternativa ou orientação em relação a esse problema específico; ou, se não, pressioná-los a fazê-lo, trazendo este assunto à sua atenção. Se você tiver um urgente precisar atualizar o PHP imediatamente, você pode considerar suprimir erros de depreciação por enquanto:mas primeiro certifique-se de identificar quaisquer outros erros de depreciação que também estejam sendo lançados.

    É absolutamente essencial realizar testes de regressão.